A expertos en FWH+xHarbour+TMySql

User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

A expertos en FWH+xHarbour+TMySql

Post by FranciscoA »

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.

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

Re: A expertos en FWH+xHarbour+TMySql

Post by ltorres »

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
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: A expertos en FWH+xHarbour+TMySql

Post by FranciscoA »

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

#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.

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

Re: A expertos en FWH+xHarbour+TMySql

Post by ltorres »

GRACIAS !!!

Voy a probarlo
elvira
Posts: 462
Joined: Fri Jun 29, 2012 12:49 pm

Re: A expertos en FWH+xHarbour+TMySql

Post by elvira »

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
ltorres
Posts: 42
Joined: Mon Jan 17, 2011 3:44 pm
Location: Lima - Peru

Re: A expertos en FWH+xHarbour+TMySql

Post by ltorres »

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
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: A expertos en FWH+xHarbour+TMySql

Post by FranciscoA »

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

Fwxh1204-MySql-TMySql
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: A expertos en FWH+xHarbour+TMySql

Post by sysctrl2 »

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 "
ltorres
Posts: 42
Joined: Mon Jan 17, 2011 3:44 pm
Location: Lima - Peru

Re: A expertos en FWH+xHarbour+TMySql

Post by ltorres »

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
Image

Espero me puedan ayudar.

Gracias


Luis
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: A expertos en FWH+xHarbour+TMySql

Post by FranciscoA »

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.

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

Re: A expertos en FWH+xHarbour+TMySql

Post by ltorres »

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

#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
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

Post by Hector Pedro Lerda »

Una pregunta que versión de mysql estas usando ????
ltorres
Posts: 42
Joined: Mon Jan 17, 2011 3:44 pm
Location: Lima - Peru

Re: A expertos en FWH+xHarbour+TMySql

Post by ltorres »

Ante todo gracias Hector, el MySql es 5.5
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

Post by Hector Pedro Lerda »

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

Post by Hector Pedro Lerda »

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.
Post Reply