A expertos en FWH+xHarbour+TMySql
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
A expertos en FWH+xHarbour+TMySql
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
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.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: A expertos en FWH+xHarbour+TMySql
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
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
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: A expertos en FWH+xHarbour+TMySql
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.
Saludos.
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
#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.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: A expertos en FWH+xHarbour+TMySql
GRACIAS !!!
Voy a probarlo
Voy a probarlo
Re: A expertos en FWH+xHarbour+TMySql
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
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
Re: A expertos en FWH+xHarbour+TMySql
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.
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
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: A expertos en FWH+xHarbour+TMySql
Luis,
Podés poner una imagen mas grande?
Saludos.
Podés poner una imagen mas grande?
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: A expertos en FWH+xHarbour+TMySql
para que conectes con MYSQL, debes de tener junto a tu App.exe la
librería: LIBMYSQL.DLL
saludos
librería: LIBMYSQL.DLL
saludos
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
Re: A expertos en FWH+xHarbour+TMySql
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-e ... 05003.html
Espero me puedan ayudar.
Gracias
Luis
http://www.subirimagenes.com/privadas-e ... 05003.html
Espero me puedan ayudar.
Gracias
Luis
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: A expertos en FWH+xHarbour+TMySql
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.
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.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: A expertos en FWH+xHarbour+TMySql
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.
Gracias
Luis
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
#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.
Luis
- Hector Pedro Lerda
- Posts: 46
- Joined: Tue May 07, 2013 7:27 pm
- Location: Buenos Aires - Argentina
Re: A expertos en FWH+xHarbour+TMySql
Una pregunta que versión de mysql estas usando ????
Re: A expertos en FWH+xHarbour+TMySql
Ante todo gracias Hector, el MySql es 5.5
- Hector Pedro Lerda
- Posts: 46
- Joined: Tue May 07, 2013 7:27 pm
- Location: Buenos Aires - Argentina
Re: A expertos en FWH+xHarbour+TMySql
Luis
Root tiene permiso en el mysql para acceder desde cualquier lugar,
Root tiene permiso en el mysql para acceder desde cualquier lugar,
- Hector Pedro Lerda
- Posts: 46
- Joined: Tue May 07, 2013 7:27 pm
- Location: Buenos Aires - Argentina
Re: A expertos en FWH+xHarbour+TMySql
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.