A expertos en FWH+xHarbour+TMySql

A expertos en FWH+xHarbour+TMySql

Postby FranciscoA » Wed Jun 10, 2009 8:33 pm

Hola amigos:
Estoy comenzando con TMySql. Agradezco lo que voy avanzando a mis colegas del foro, especialmente a Gabo, Willi y William, quienes me han apoyado para comenzar.
He logrado presentar una tabla utilizando FWH+xHarbour+TMySql con TxBrowse. Sin embargo (hasta hoy) noto un extraño comportamiento de xBrowse. Si se usa las flechas arriba y sobrepasa Bof(), xBrowse borra de pantalla el primer registro. Lo mismo si se usa la barra Scrol Vertical. Dejo, aquí, el codigo autocontenido, por si desean probarlo y ayudarme a depurarlo. En todos mis programas anteriores nunca se presentó el inconveniente descrito.

#include "fivewin.ch"
#include "xBrowse.ch"

STATIC oCon

//----------------------------------
FUNCTION main()
MSGRun( "Conectando a server-sql, espere...", "SOFTWARE", ;
{|| oCon := TMYsqlServer():new( "localhost", "root", "xxx", 3306)} )

IF oCon:lError
MsgStop( "Error: No se estableció conexión, verifique y reintente...","Alto" )
RETURN NIL
ENDIF


IF !oCon:DBExist( "tutor" )
MSGRun( "Creando Base de Datos, aguarde...",, {|| oCon:CreateDataBase( "tutor")} )
ENDIF

oCon:SelectDB( "tutor" )
IF oCon:lError
MsgStop( "No se pudo seleccionar la Base de Datos...","alto" )
RETURN NIL
ENDIF

MisTablSql() //Crear tablas

oCon:end()

RETURN NIL

//---------------------
Function MisTablSql()
LOCAL cCmdSql, cQuery, oDatos, oDlg
local oBrw, oCol, n:=0

if oCon:TableExist( "usuarios" )
oCon:DeleteTable("usuarios")
endif

cCmdSql:= "CREATE TABLE IF NOT EXISTS usuarios (" +;
"CLAVE VARCHAR(10) NOT NULL COMMENT 'Clave'," +;
"NOMBRE VARCHAR(30) NOT NULL COMMENT 'Nombre'," +;
"PRIMARY KEY (CLAVE))" +;
"ENGINE = InnoDB COMMENT 'usuarios';"

oCon:Query(cCmdSql)

cCmdSql := "INSERT INTO USUARIOS (NOMBRE,CLAVE) VALUES('Francisco','002');"
oCon:Query( cCmdSql )
cCmdSql := "INSERT INTO USUARIOS (NOMBRE,CLAVE) VALUES('Roberto','001');"
oCon:Query( cCmdSql )
cCmdSql := "INSERT INTO USUARIOS (NOMBRE,CLAVE) VALUES('Alejandro','003');"
oCon:Query( cCmdSql )

**cQuery:= "SELECT clave, nombre FROM usuarios" //* FROM usuarios ORDER BY clave LIMIT 100"
cQuery:= "SELECT * FROM usuarios ORDER BY clave"
oDatos:= oCon:Query( cQuery )

oDatos:GoTop()

DEFINE DIALOG oDlg FROM 2,2 TO 20,60 ;
TITLE "CLIENTES (FWH + xHARBOUR + TMySQL)"

oBrw := TXBrowse():New( oDlg )

SetMyBrwSql(oBrw, oDatos)

oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:nRowDividerStyle := LINESTYLE_BLACK
oBrw:lColDividerComplete := .t.
oBrw:bClrStd := {|| IF( (oDatos:Recno()%2)==0, ;
{ CLR_BLACK, RGB(250,240,188)},{CLR_BLACK,RGB(254,252,237)} ) }

oCol := oBrw:AddCol()
oCol:bStrData := { || oDatos:clave }
oCol:cHeader := "Clave "
oCol:nWidth := 40

oCol := oBrw:AddCol()
oCol:bStrData := { || oDatos:nombre }
oCol:cHeader := "Nombre "
oCol:nWidth := 100

oBrw:CreateFromCode()
oDlg:oClient := oBrw

ACTIVATE DIALOG oDlg CENTER
Return nil

//---------------------------------
FUNCTION SetMyBrwSql( oBrw,oTable )
oBrw:bGoTop := { || oTable:Gotop() }
oBrw:bGoBottom := { || oTable:GoBottom() }
oBrw:bSkip := { |n| oTable:Skip(n) }
oBrw:bBof := { || oTable:Bof() }
oBrw:bEof := { || oTable:Eof() }
oBrw:bBookMark := { | n | if( n == nil, oTable:RecNo(),oTable:GoTo(n) ) }
oBrw:bKeyNo := oBrw:bBookMark
oBrw:bKeyCount := { || oTable:LastRec() }
oBrw:oDbf := oTable

if oBrw:oVScroll() != nil
oBrw:oVscroll():SetRange( 1,oTable:Lastrec() )
endif
oBrw:Refresh()
RETURN NIL

Agradezco de antemano cualquier comentario.
Saludos
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: A expertos en FWH+xHarbour+TMySql

Postby ltorres » Thu Aug 01, 2013 8:17 pm

Francisco

Buenas tardes, ¿podrías ayudarme a establecer la conexión al MySql?, e probado con las versiones:

FW 6.12+ BCC551+xH 0.99.71
FW 6.12+ BCC551+xH 1.2.1
FW 11.01+ BCC582+xH 1.2.1
FW 13.01+ BCC582+xH 1.2.3

y NADA !!.

Gracias

Luis
ltorres
 
Posts: 42
Joined: Mon Jan 17, 2011 3:44 pm
Location: Lima - Peru

Re: A expertos en FWH+xHarbour+TMySql

Postby FranciscoA » Thu Aug 01, 2013 9:03 pm

Luis,
Aquí tienes este codigo ejemplo para empezar. Cualquier duda, solo pregunta en este foro y obtendrás toda la ayuda que necesites.
Utilizo TMySql y mi version FHW1204.
Code: Select all  Expand view

#include "FiveWin.ch"

Static oServer

//----------------
Function Main()
local cHost, cUser, cPass, nPort, cNomBDD

//CONECCION CON SERVIDOR
cHost := "localhost"       // "127.0.0.1"  //en modo local, ó  "19x.16x.0.17"   //IP servidor
cUser := "Luis"            // usuario
cPass := "tupassword"      // password
nPort := "3306"            // puerto para MySql
cNomBDD := "tubasedatos"   //Nombre base de datos

if !IsInternet()
   MsgInfo("No se puede establecer coneccion remota."+CRLF+;
           "No se tiene acceso a Internet.","Advertencia")
endif

if !Coneccion(cHost, cUser, cPass, nPort, cNomBDD)
   return nil
endif
//FIN CONECCION CON SERVIDOR


  ACTIVATE WINDOW oWnd MAXIMIZED
  ......
  ......
  oServer:End()

Return nil


//CONECTAR CON SERVIDOR MYSQL Y CREAR BASE DE DATOS Y TABLAS
//----------------------------------
Function Coneccion(cHost, cUser, cPass, nPort, cNomBDD)
local cCmdSql

MsgRun( "Conectando con servidor. Aguarde...", "FAPSOFTWARE", ;
        {|| oServer := TMYsqlServer():new( cHost, cUser, cPass, nPort) } )

if oServer:lError
   MsgStop(oServer:Error())  //Descrip en MySql.prg
   Return .f.
endif


//CREAR BASE DE DATOS SI NO EXISTE
oServer:Query( "CREATE DATABASE IF NOT EXISTS " + cNomBDD )

if oServer:lError
  MsgStop( "No se pudo crear la Base de Datos "+cNomBDD,"Alto" )
  oServer:End()
  return .f.
endif


//SELECCIONAR LA BASE DE DATOS
oServer:SelectDB( cNomBDD )
if oServer:lError
  MsgStop( "No se pudo seleccionar la Base de Datos (o no existe)."+CRLF+;
           "Base de Datos: "+cNomBDD,"Alto" )
  oServer:End()
  return .f.
endif


//CREAR TABLAS SI NO EXISTEN
cCmdSql:=  "CREATE TABLE IF NOT EXISTS usuarios(" +;
           "NOMBRE VARCHAR(50)   DEFAULT '' COMMENT 'Nombre del usuario'," +;
           "CODIGO VARCHAR(20)   DEFAULT '' COMMENT 'Codigo acceso del usuario'," +;
           "ADMIN  CHAR(1)  DEFAULT '' COMMENT 'Tipo de Acceso'," +;
           "CONTA  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Contab'," +;
           "CDIAR  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Cdiario'," +;
           "RECJA  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Rcaja tipo CD'," +;
           "RCAJA  CHAR(1)  DEFAULT '' COMMENT 'Acceso a RecibosC'," +;
           "DEPOS  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Depositos'," +;
           "CHEQU  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Cheques'," +;
           "NOTDC  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Notas de Contab'," +;
           "FACTU  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Facturas' )" +;
           "ENGINE = InnoDB COMMENT 'usuarios';"

oServer:Query(cCmdSql)

if oServer:lError
   MsgStop(oServer:Error)
   MsgStop( "No se pudo crear la tabla USUARIOS, verifique." )
   oServer:End()
   return .f.
endif

//LAS DEMAS TABLAS...
...
...

Return .t.

 

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: A expertos en FWH+xHarbour+TMySql

Postby ltorres » Thu Aug 01, 2013 9:06 pm

GRACIAS !!!

Voy a probarlo
ltorres
 
Posts: 42
Joined: Mon Jan 17, 2011 3:44 pm
Location: Lima - Peru

Re: A expertos en FWH+xHarbour+TMySql

Postby elvira » Thu Aug 01, 2013 9:16 pm

Francisco,

Revisa samples\adoxb.prg y la clase TDataROw.

En los foros de inglés tienes ejemplos de ambos.

Es un aproach mucho más sencillo y con menos código.

Un saludo
elvira
 
Posts: 515
Joined: Fri Jun 29, 2012 12:49 pm

Re: A expertos en FWH+xHarbour+TMySql

Postby ltorres » Thu Aug 01, 2013 9:49 pm

Francisco

Ya compila pero no conecta, sale este mensaje, desde el YOG si conecta con los mismos datos, te adjunto la pantalla, creo que el problema mas que en el programa es en la configuración.

Image

De repente falta alguna libreria. etc.

Te agradezco de antemano.

ltorres wrote:GRACIAS !!!

Voy a probarlo
ltorres
 
Posts: 42
Joined: Mon Jan 17, 2011 3:44 pm
Location: Lima - Peru

Re: A expertos en FWH+xHarbour+TMySql

Postby FranciscoA » Thu Aug 01, 2013 10:04 pm

Luis,
Podés poner una imagen mas grande?
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: A expertos en FWH+xHarbour+TMySql

Postby sysctrl2 » Fri Aug 02, 2013 2:00 am

para que conectes con MYSQL, debes de tener junto a tu App.exe la
librería: LIBMYSQL.DLL
saludos
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 951
Joined: Mon Feb 05, 2007 7:15 pm

Re: A expertos en FWH+xHarbour+TMySql

Postby ltorres » Fri Aug 02, 2013 8:13 pm

Disculpen, por error coloque el enlace al preview, aquí esta la imagen de la configuración de mi prueba de conexión.

http://www.subirimagenes.com/privadas-errorconexionmysql-2105003.html
Image

Espero me puedan ayudar.

Gracias


Luis
ltorres
 
Posts: 42
Joined: Mon Jan 17, 2011 3:44 pm
Location: Lima - Peru

Re: A expertos en FWH+xHarbour+TMySql

Postby FranciscoA » Sat Aug 03, 2013 3:29 am

Probá deshabilitando el firewall de windows. O configuralo para que permita a MySql.
Postea aqui tu codigo para que todos lo podamos revisar y asi obtienes ayuda general del foro. (postea un codigo que podamos compilarlo facilmente)
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: A expertos en FWH+xHarbour+TMySql

Postby ltorres » Sat Aug 03, 2013 12:35 pm

Francisco

Estoy usando el que me pusiste como ejemplo, solo ese, compila bien pero no conecta, con el utilitario YOG ingreso a la BD normal.

Code: Select all  Expand view

#include "FiveWin.ch"

Static oServer

//----------------
Function Main()
local cHost, cUser, cPass, nPort, cNomBDD

//CONECCION CON SERVIDOR
cHost := '192.168.100.188'       // "127.0.0.1"  //en modo local, ó  "19x.16x.0.17"   //IP servidor
cUser := 'root'            // usuario
cPass := 'mipass'      // password
nPort := 3306            // puerto para MySql
cNomBDD := 'mibd'   //Nombre base de datos

if !IsInternet()
   MsgInfo("No se puede establecer coneccion remota."+CRLF+;
           "No se tiene acceso a Internet.","Advertencia")
endif

if !Coneccion(cHost, cUser, cPass, nPort, cNomBDD)
   return nil
endif
//FIN CONECCION CON SERVIDOR


  ACTIVATE WINDOW oWnd MAXIMIZED
  //......
  //......
  oServer:End()

Return nil


//CONECTAR CON SERVIDOR MYSQL Y CREAR BASE DE DATOS Y TABLAS
//----------------------------------
Function Coneccion(cHost, cUser, cPass, nPort, cNomBDD)
local cCmdSql

MsgRun( "Conectando con servidor. Aguarde...", "FAPSOFTWARE", ;
        {|| oServer := TMYsqlServer():new( cHost, cUser, cPass, nPort) } )
       
//cConString1:="MySQL="+lower(ALLTRIM(cConnName)) + ";" + "UID="+lower(ALLTRIM(cConnUsrs))+ ";"+"pwd="+lower(ALLTRIM(cConnPass))+ ";" +"dtb="+alltrim(LOWER(cConnBase))+";PRT=3306"  
     
     nCon1 := SR_AddConnection( CONNECT_MYSQL, cConString1 )

if oServer:lError
   MsgStop(oServer:Error())  //Descrip en MySql.prg
   Return .f.
endif


//CREAR BASE DE DATOS SI NO EXISTE
oServer:Query( "CREATE DATABASE IF NOT EXISTS " + cNomBDD )

if oServer:lError
  MsgStop( "No se pudo crear la Base de Datos "+cNomBDD,"Alto" )
  oServer:End()
  return .f.
endif


//SELECCIONAR LA BASE DE DATOS
oServer:SelectDB( cNomBDD )
if oServer:lError
  MsgStop( "No se pudo seleccionar la Base de Datos (o no existe)."+CRLF+;
           "Base de Datos: "+cNomBDD,"Alto" )
  oServer:End()
  return .f.
endif


//CREAR TABLAS SI NO EXISTEN
cCmdSql:=  "CREATE TABLE IF NOT EXISTS usuarios(" +;
           "NOMBRE VARCHAR(50)   DEFAULT '' COMMENT 'Nombre del usuario'," +;
           "CODIGO VARCHAR(20)   DEFAULT '' COMMENT 'Codigo acceso del usuario'," +;
           "ADMIN  CHAR(1)  DEFAULT '' COMMENT 'Tipo de Acceso'," +;
           "CONTA  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Contab'," +;
           "CDIAR  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Cdiario'," +;
           "RECJA  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Rcaja tipo CD'," +;
           "RCAJA  CHAR(1)  DEFAULT '' COMMENT 'Acceso a RecibosC'," +;
           "DEPOS  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Depositos'," +;
           "CHEQU  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Cheques'," +;
           "NOTDC  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Notas de Contab'," +;
           "FACTU  CHAR(1)  DEFAULT '' COMMENT 'Acceso a Facturas' )" +;
           "ENGINE = InnoDB COMMENT 'usuarios';"

oServer:Query(cCmdSql)

if oServer:lError
   MsgStop(oServer:Error)
   MsgStop( "No se pudo crear la tabla USUARIOS, verifique." )
   oServer:End()
   return .f.
endif

//LAS DEMAS TABLAS...
//...
//...

Return .t.
 
 


Gracias


Luis
ltorres
 
Posts: 42
Joined: Mon Jan 17, 2011 3:44 pm
Location: Lima - Peru

Re: A expertos en FWH+xHarbour+TMySql

Postby Hector Pedro Lerda » Sat Aug 03, 2013 3:41 pm

Una pregunta que versión de mysql estas usando ????
User avatar
Hector Pedro Lerda
 
Posts: 46
Joined: Tue May 07, 2013 7:27 pm
Location: Buenos Aires - Argentina

Re: A expertos en FWH+xHarbour+TMySql

Postby ltorres » Sat Aug 03, 2013 3:47 pm

Ante todo gracias Hector, el MySql es 5.5
ltorres
 
Posts: 42
Joined: Mon Jan 17, 2011 3:44 pm
Location: Lima - Peru

Re: A expertos en FWH+xHarbour+TMySql

Postby Hector Pedro Lerda » Sat Aug 03, 2013 4:03 pm

Luis

Root tiene permiso en el mysql para acceder desde cualquier lugar,
User avatar
Hector Pedro Lerda
 
Posts: 46
Joined: Tue May 07, 2013 7:27 pm
Location: Buenos Aires - Argentina

Re: A expertos en FWH+xHarbour+TMySql

Postby Hector Pedro Lerda » Sat Aug 03, 2013 4:12 pm

y otra pregunta, tal vez sea tonta, que password estas usando? , porque en el ejemplo dejastes el indicativo pero al instalar el server debes haber colocado otro o instalastes el servidor con ese.
User avatar
Hector Pedro Lerda
 
Posts: 46
Joined: Tue May 07, 2013 7:27 pm
Location: Buenos Aires - Argentina

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 90 guests