FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour A expertos en FWH+xHarbour+TMySql
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
A expertos en FWH+xHarbour+TMySql
Posted: Wed Jun 10, 2009 08: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
Posts: 42
Joined: Mon Jan 17, 2011 03:44 PM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Thu Aug 01, 2013 08: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

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Thu Aug 01, 2013 09: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 (fw): Select all Collapse
#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
Posts: 42
Joined: Mon Jan 17, 2011 03:44 PM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Thu Aug 01, 2013 09:06 PM

GRACIAS !!!

Voy a probarlo

Posts: 518
Joined: Fri Jun 29, 2012 12:49 PM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Thu Aug 01, 2013 09: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

Posts: 42
Joined: Mon Jan 17, 2011 03:44 PM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Thu Aug 01, 2013 09: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.



De repente falta alguna libreria. etc.

Te agradezco de antemano.

ltorres wrote:GRACIAS !!!

Voy a probarlo
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: A expertos en FWH+xHarbour+TMySql
Posted: 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
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Fri Aug 02, 2013 02: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 "
Posts: 42
Joined: Mon Jan 17, 2011 03:44 PM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Fri Aug 02, 2013 08: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


Espero me puedan ayudar.

Gracias


Luis
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Sat Aug 03, 2013 03: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
Posts: 42
Joined: Mon Jan 17, 2011 03:44 PM
Re: A expertos en FWH+xHarbour+TMySql
Posted: 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 (fw): Select all Collapse
#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
Posts: 46
Joined: Tue May 07, 2013 07:27 PM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Sat Aug 03, 2013 03:41 PM

Una pregunta que versi贸n de mysql estas usando ????

Posts: 42
Joined: Mon Jan 17, 2011 03:44 PM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Sat Aug 03, 2013 03:47 PM

Ante todo gracias Hector, el MySql es 5.5

Posts: 46
Joined: Tue May 07, 2013 07:27 PM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Sat Aug 03, 2013 04:03 PM

Luis

Root tiene permiso en el mysql para acceder desde cualquier lugar,

Posts: 46
Joined: Tue May 07, 2013 07:27 PM
Re: A expertos en FWH+xHarbour+TMySql
Posted: Sat Aug 03, 2013 04: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.