TDolphin Clase para manejar MySql
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: TDolphin Clase para manejar MySql
Hola
El punto es que no se que verisones del compilador estes usando tanto para PRG como para C, si usas borland (5.5 / 5.582), microsoft( 2003, 2008, 2010), 32 o 64 bits, o si trabajas en Mac, por eso dejo a la libre desicion del usuario construir la libreria
En el blog dejo los links para descargar harbour, xharbour, disponibles para borland y MS (32/64) y la dll de Mysql con la respectiva libreria de importacion
Aqui explico como descargar los fuentes, http://tdolphin.blogspot.com/2010/06/co ... rting.html
Construir la libreria para borland: http://tdolphin.blogspot.com/2010/07/co ... d-lib.html
Construir la libreria para MS (32/64):http://tdolphin.blogspot.com/2010/08/td ... -bits.html
El punto es que no se que verisones del compilador estes usando tanto para PRG como para C, si usas borland (5.5 / 5.582), microsoft( 2003, 2008, 2010), 32 o 64 bits, o si trabajas en Mac, por eso dejo a la libre desicion del usuario construir la libreria
En el blog dejo los links para descargar harbour, xharbour, disponibles para borland y MS (32/64) y la dll de Mysql con la respectiva libreria de importacion
Aqui explico como descargar los fuentes, http://tdolphin.blogspot.com/2010/06/co ... rting.html
Construir la libreria para borland: http://tdolphin.blogspot.com/2010/07/co ... d-lib.html
Construir la libreria para MS (32/64):http://tdolphin.blogspot.com/2010/08/td ... -bits.html
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Re: TDolphin Clase para manejar MySql
Daniel , estoy haciendo pruebas con el method seek
espero salga la imagen que quiero mostrarte:
http://img237.imageshack.us/img237/5712/dibujo1g.jpg
te dejo el codigo completito, utilizand el CONEECT.INI de SAMPLES de dolphin.
saludos..
espero salga la imagen que quiero mostrarte:
http://img237.imageshack.us/img237/5712/dibujo1g.jpg
te dejo el codigo completito, utilizand el CONEECT.INI de SAMPLES de dolphin.
Code: Select all
#include <Fivewin.ch>
#include "hbcompat.ch"
#include "tdolphin.ch"
#include <XBrowse.ch>
#DEFINE C_SIMPLE CHR( 39 )
#DEFINE c_simple CHR( 39 )
* ---------------------------------------------------------*
* testfw3.prg *
* ejemplo que muestra el uso de busquedas con tdolphin *
* y xbrowse
* by, Cesar Cortes Cruz *
* sin +- fivewin es mejor
* ---------------------------------------------------------*
Function Main()
WITH OBJECT SysCtrl()
:New()
END OBJECT
return nil
CLASS SysCtrl
DATA oBox, oGrid, oMain, oCon, oQry AS OBJECT
DATA cUser INIT ":: Usuario ::"
METHOD New()
METHOD Conecta()
METHOD CreaPrueba()
METHOD MakeDialogo()
METHOD AddReg()
method MakeBottoms()
method Dlg1()
METHOD ChkFolio( oGet, cNo_folio, oDlg )
ENDCLASS
METHOD New() CLASS SysCtrl
//Activated Case sensitive
D_SetCaseSensitive( .t. )
* ----------------------------------- *
* conectamos con el servidor *
* ----------------------------------- *
IF ( ::oCon := ::Conecta() ) == NIL
msgstop('No se pudo realizar una conecxion con el servidor', ::cUser )
RETURN NIL
ENDIF
* -------------------------------------------- *
* si tuvimos exito con la conexion *
* creamos la tabla PRUEBA para nuestro ejemplo *
* -------------------------------------------- *
::CreaPrueba()
* -------------------------------------------- *
* creamos el dialogo para nuestros controles *
* -------------------------------------------- *
::MakeDialogo()
* -------------------------------------------- *
* cerramos la conexion *
* -------------------------------------------- *
::oCon:End()
return Self
METHOD Conecta() CLASS SysCtrl
LOCAL hIni := HB_ReadIni( ".\connect.ini" )
LOCAL oServer := NIL
LOCAL cServer := hIni["mysql"]["host"],;
cUser := hIni["mysql"]["user"],;
cPassword := hIni["mysql"]["psw"],;
nPort := val(hIni["mysql"]["port"]), ;
cDBName := hIni["mysql"]["dbname"], ;
nFlags := val(hIni["mysql"]["flags"])
LOCAL oErr
TRY
oServer = TDolphinSrv():New( cServer, ;
cUser, ;
cPassword, ;
nPort,;
nFlags,;
cDbName)
CATCH oErr
RETURN NIL
END
RETURN oServer
METHOD CreaPrueba() CLASS SysCtrl
local cQry
* -------------------------------------------- *
* creamos la tabla PRUEBA *
* -------------------------------------------- *
cQry := "CREATE TABLE IF NOT EXISTS prueba ( "
cQry += "cliente_id INT UNSIGNED NOT NULL AUTO_INCREMENT,"
cQry += "no_folio varchar(10) default ' ', "
cQry += "no_suscriptor varchar(10) default ' ', "
cQry += "fecha date NOT NULL, "
cQry += "nombre varchar(60) default ' ', "
cQry += "PRIMARY KEY (cliente_id)"
cQry += ") ENGINE = InnoDB"
::oCon:Execute( cQry )
Return nil
METHOD MakeDialogo() CLASS SysCtrl
local oSelf := Self
local nBottom, nRight
* --------------------------------------- *
* creamos nuestro query *
* ordenado por el campo NO_FOLIO *
* --------------------------------------- *
::oQry = ::oCon:Query( "SELECT * FROM prueba ORDER BY no_folio" )
::oQry:zap() && limpiamos la tabla.
* --------------------------------------- *
* agregamos unos registros *
* a la tabla PRUEBA *
* --------------------------------------- *
::AddReg()
DEFINE DIALOG ::oBox SIZE 700,300
::oBox:cTitle := 'BUSQUEDAS CON TDOLPHIN'
::MakeBottoms()
// nBottom := (::oBox:nBottom / 2) - 100
nRight := (::oBox:nRight / 2 )
@ 0, 0 XBROWSE ::oGrid
::oGrid:nTop := 00
::oGrid:nLeft := 100+2
::oGrid:nBottom := 150
::oGrid:nRight := nRight
SetDolphin( ::oGrid, ::oQry )
::oGrid:CreateFromCode()
::oBox:oClient = ::oGrid
ACTIVATE DIALOG ::oBox CENTERED
* ---------------------------------------- *
* cerramos el query *
* -----------------------------------------*
::oQry:End()
RETURN NIL
METHOD AddReg() CLASS SysCtrl
* ----------------------------------------- *
* damos de alta 5 registros *
* ----------------------------------------- *
::oQry:GetBlankRow( .F. )
::oQry:no_folio := '303030'
::oQry:no_suscriptor := "200"
::oQry:fecha := date()
::oQry:nombre := "NOMBRE 1"
::oQry:save()
::oQry:GetBlankRow( .F. )
::oQry:no_folio := '404040'
::oQry:no_suscriptor := "300"
::oQry:fecha := date()
::oQry:nombre := "NOMBRE 2"
::oQry:save()
::oQry:GetBlankRow( .F. )
::oQry:no_folio := '505050'
::oQry:no_suscriptor := "400"
::oQry:fecha := date()
::oQry:nombre := "NOMBRE 4"
::oQry:save()
::oQry:GetBlankRow( .F. )
::oQry:no_folio := '2000S'
::oQry:no_suscriptor := "500"
::oQry:fecha := date()
::oQry:nombre := "NOMBRE 5"
::oQry:save()
::oQry:GetBlankRow( .F. )
::oQry:no_folio := '606060'
::oQry:no_suscriptor := "600"
::oQry:fecha := date()
::oQry:nombre := "CESAR CORTES CRUZ"
::oQry:save()
return nil
method MakeBottoms() CLASS SysCtrl
local oBtn := array(5)
@ 10, 10 BUTTON oBtn[1] PROMPT "METHOD Seek() " SIZE 70, 12 OF ::oBox ;
ACTION ( ::Dlg1() ) PIXEL
@ 14, 20 BUTTON oBtn[2] PROMPT "&Regresar" SIZE 40, 12 OF ::oBox ACTION ( ::oBox:end() ) CANCEL
return nil
method Dlg1() CLASS SysCtrl
local oDlg
local oGet := array(10)
local cNo_folio := space(10)
local oBtn
DEFINE DIALOG oDlg title 'BUSCAR POR EL CAMPO ( NO_FOLIO )'
@ 10, 10 SAY "No. Folio : " OF oDlg pixel
@ 10, 70 GET oGet[ 1 ] VAR cNo_folio of oDlg SIZE 60, 10 PICTURE "@!k" PIXEL UPDATE ;
valid ::ChkFolio( @oGet, @cNo_folio, oDlg )
@ 50, 50 BUTTON oBtn PROMPT "Aceptar" SIZE 60, 12 OF oDlg ;
ACTION ( oDlg:end() ) PIXEL
ACTIVATE DIALOG oDlg CENTERED
return nil
METHOD ChkFolio( oGet, cNo_folio, oDlg ) CLASS SysCtrl
LOCAL nSeek
nSeek = ::oQry:Seek( cNo_folio , 2 )
if nSeek == 0
? "No existe"
else
? ::oQry:no_folio, ::oQry:nombre
endif
oDlg:setfocus()
RETURN .T.
#include "setbrw.prg"
saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
Re: TDolphin Clase para manejar MySql
Uploaded with ImageShack.us
ek query, esta ordenado por la columna NO_FOLIO , pero el seek me devuelve 0
saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
Re: TDolphin Clase para manejar MySql
Daniel estoy seguro que algo estoy haciendo mal,
el registro que estoy buscando esta en la lista,
pero al buscarlo no lo encuentra.
Gracias por tu apollo.
saludos.
el registro que estoy buscando esta en la lista,
pero al buscarlo no lo encuentra.
Gracias por tu apollo.
saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: TDolphin Clase para manejar MySql
Cesar
Puedes usarlo de esta forma
nSeek = ::oQry:Seek( cNo_folio, 2, , , .T.) //lSoft := .T.
pero hice una muy pequeña correccion a la clase, efectivamente algo estaba fallando en la busqueda exacta ( lSoft := .F. )
Gracias por el feedback, el ejemplo esta muy claro y efectivo para exponer el problema (asi debe ser)
Puedes usarlo de esta forma
nSeek = ::oQry:Seek( cNo_folio, 2, , , .T.) //lSoft := .T.
pero hice una muy pequeña correccion a la clase, efectivamente algo estaba fallando en la busqueda exacta ( lSoft := .F. )
Gracias por el feedback, el ejemplo esta muy claro y efectivo para exponer el problema (asi debe ser)
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Re: TDolphin Clase para manejar MySql
Hola Daniel,
He bajado la clase y te pregunto: puedo crear la lib con una version mas antigua de xHarbour como la 1.1.0? O desde que versión de xHarbour puedo generarla?
Saludos,
He bajado la clase y te pregunto: puedo crear la lib con una version mas antigua de xHarbour como la 1.1.0? O desde que versión de xHarbour puedo generarla?
Saludos,
Kleyber Derick
FWH / xHb / xDevStudio / SQLLIB
FWH / xHb / xDevStudio / SQLLIB
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: TDolphin Clase para manejar MySql
Kleyber
Podrias intentarlo, solo he usado versiones desde junio hasta la fecha
Podrias intentarlo, solo he usado versiones desde junio hasta la fecha
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Re: TDolphin Clase para manejar MySql
Holas Daniel, ahora si ya funciona,
vamos a seguir probando, con los demas methodos, locate y find, cualquier problemita
aqui lo estaremos reportando.
Seria bueno que dejaras TESTFW3.PRG en samples para que los demas colegas
que aun seguimos con DBF demos el salto a sql con tdholphin.
saludos..
vamos a seguir probando, con los demas methodos, locate y find, cualquier problemita
aqui lo estaremos reportando.
Seria bueno que dejaras TESTFW3.PRG en samples para que los demas colegas
que aun seguimos con DBF demos el salto a sql con tdholphin.
saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
Re: METHOD Seek, locate, find TDOLPHIN y FWH
TestFw3.prg
ejemplo que muestra el uso de los metodos, seek, locate, find, con tdolphin,
partiendo desde un xBrowse y utilizando un mismo QUERY para todo.
Tambien se muestra como agregar o modificar datos a nuestra tabla PRUEBA,
usando un control GET y el method VALID, para evitar la duplicidad de datos,
adjunto el codigo completito usando connect.ini de la carpeta SAMPLES de tdolphin.
compilar con: buildx testfw3
saludos.
ejemplo que muestra el uso de los metodos, seek, locate, find, con tdolphin,
partiendo desde un xBrowse y utilizando un mismo QUERY para todo.
Tambien se muestra como agregar o modificar datos a nuestra tabla PRUEBA,
usando un control GET y el method VALID, para evitar la duplicidad de datos,
adjunto el codigo completito usando connect.ini de la carpeta SAMPLES de tdolphin.
compilar con: buildx testfw3
saludos.
Code: Select all
#include <Fivewin.ch>
#include <hbcompat.ch>
#include <tdolphin.ch>
#include <XBrowse.ch>
#DEFINE C_SIMPLE CHR( 39 )
#DEFINE c_simple CHR( 39 )
* ---------------------------------------------------------*
* testfw3.prg *
* uso de methods Seek(), Locate(), Find(), Save() *
* con tDolphin y xbrowse *
* *
* by, Cesar Cortes Cruz *
* sin +- fivewin es mejor
* ---------------------------------------------------------*
Function Main()
WITH OBJECT SysCtrl()
:New()
END OBJECT
return nil
CLASS SysCtrl
DATA oBox, oGrid, oMain, oCon, oQry AS OBJECT
DATA cUser INIT ":: Usuario ::"
METHOD New()
METHOD Conecta()
METHOD CreaPrueba()
METHOD MakeDialogo()
METHOD AddReg()
method MakeBottoms()
method Dlg1()
METHOD ChkFolio( oGet, cNo_folio, oDlg )
METHOD Guardar()
method Dlg2()
METHOD ChkFolio2( oGet, cNo_folio, oDlg )
method Dlg3()
METHOD ChkFolio3( oGet, cNo_folio, oDlg )
ENDCLASS
METHOD New() CLASS SysCtrl
SET( _SET_DATEFORMAT,"dd/mm/yyyy" )
//Activated Case sensitive
D_SetCaseSensitive( .t. )
Set_MyLang( "esp" ) && seleccionamos el lenguaje
* ----------------------------------- *
* conectamos con el servidor *
* ----------------------------------- *
IF ( ::oCon := ::Conecta() ) == NIL
msgstop('No se pudo realizar una conecxion con el servidor', ::cUser )
RETURN NIL
ENDIF
* -------------------------------------------- *
* si tuvimos exito con la conexion *
* creamos la tabla PRUEBA para nuestro ejemplo *
* -------------------------------------------- *
::CreaPrueba()
* -------------------------------------------- *
* creamos el dialogo para nuestros controles *
* -------------------------------------------- *
::MakeDialogo()
* -------------------------------------------- *
* cerramos la conexion *
* -------------------------------------------- *
::oCon:End()
return Self
METHOD Conecta() CLASS SysCtrl
LOCAL hIni := HB_ReadIni( ".\connect.ini" )
LOCAL oServer := NIL
LOCAL cServer := hIni["mysql"]["host"],;
cUser := hIni["mysql"]["user"],;
cPassword := hIni["mysql"]["psw"],;
nPort := val(hIni["mysql"]["port"]), ;
cDBName := hIni["mysql"]["dbname"], ;
nFlags := val(hIni["mysql"]["flags"])
LOCAL oErr
TRY
oServer = TDolphinSrv():New( cServer, ;
cUser, ;
cPassword, ;
nPort,;
nFlags,;
cDbName)
CATCH oErr
RETURN NIL
END
RETURN oServer
METHOD CreaPrueba() CLASS SysCtrl
local cQry
* -------------------------------------------- *
* creamos la tabla PRUEBA *
* -------------------------------------------- *
cQry := "CREATE TABLE IF NOT EXISTS prueba ( "
cQry += "cliente_id INT UNSIGNED NOT NULL AUTO_INCREMENT,"
cQry += "no_folio varchar(10) default ' ', "
cQry += "no_suscriptor varchar(10) default ' ', "
cQry += "fecha date NOT NULL, "
cQry += "nombre varchar(60) default ' ', "
cQry += "PRIMARY KEY (cliente_id)"
cQry += ") ENGINE = InnoDB"
::oCon:Execute( cQry )
Return nil
METHOD MakeDialogo() CLASS SysCtrl
local oSelf := Self
local nBottom, nRight
* --------------------------------------- *
* creamos nuestro query *
* ordenado por el campo NO_FOLIO *
* --------------------------------------- *
::oQry = ::oCon:Query( "SELECT * FROM prueba ORDER BY no_folio" )
::oQry:zap() && limpiamos la tabla.
* --------------------------------------- *
* agregamos unos registros *
* a la tabla PRUEBA *
* --------------------------------------- *
::AddReg()
DEFINE DIALOG ::oBox SIZE 700,300
::oBox:cTitle := 'BUSQUEDAS CON TDOLPHIN'
::MakeBottoms()
// nBottom := (::oBox:nBottom / 2) - 100
nRight := (::oBox:nRight / 2 )
@ 0, 0 XBROWSE ::oGrid
::oGrid:nTop := 00
::oGrid:nLeft := 100+2
::oGrid:nBottom := 150
::oGrid:nRight := nRight
SetDolphin( ::oGrid, ::oQry )
::oGrid:CreateFromCode()
::oBox:oClient = ::oGrid
ACTIVATE DIALOG ::oBox CENTERED
* ---------------------------------------- *
* cerramos el query *
* -----------------------------------------*
::oQry:End()
RETURN NIL
METHOD AddReg() CLASS SysCtrl
* ----------------------------------------- *
* damos de alta 5 registros *
* ----------------------------------------- *
::oQry:GetBlankRow( .F. )
::oQry:no_folio := '303030'
::oQry:no_suscriptor := "200"
::oQry:fecha := date()
::oQry:nombre := "NOMBRE 1"
::oQry:save()
::oQry:GetBlankRow( .F. )
::oQry:no_folio := '404040'
::oQry:no_suscriptor := "300"
::oQry:fecha := date()
::oQry:nombre := "NOMBRE 2"
::oQry:save()
::oQry:GetBlankRow( .F. )
::oQry:no_folio := '505050'
::oQry:no_suscriptor := "400"
::oQry:fecha := date()
::oQry:nombre := "NOMBRE 4"
::oQry:save()
::oQry:GetBlankRow( .F. )
::oQry:no_folio := '2000S'
::oQry:no_suscriptor := "500"
::oQry:fecha := date()
::oQry:nombre := "NOMBRE 5"
::oQry:save()
::oQry:GetBlankRow( .F. )
::oQry:no_folio := '606060'
::oQry:no_suscriptor := "600"
::oQry:fecha := date()
::oQry:nombre := "CESAR CORTES CRUZ"
::oQry:save()
return nil
method MakeBottoms() CLASS SysCtrl
local oBtn := array(5)
@ 10, 10 BUTTON oBtn[1] PROMPT "METHOD Seek() " SIZE 70, 12 OF ::oBox ;
ACTION ( ::Dlg1() ) PIXEL
@ 30, 10 BUTTON oBtn[2] PROMPT "METHOD Locate() " SIZE 70, 12 OF ::oBox ;
ACTION ( ::Dlg2() ) PIXEL
@ 50, 10 BUTTON oBtn[3] PROMPT "METHOD Find() " SIZE 70, 12 OF ::oBox ;
ACTION ( ::Dlg3() ) PIXEL
@ 70, 10 BUTTON oBtn[4] PROMPT "&Exit" SIZE 70, 12 OF ::oBox ACTION ( ::oBox:end() ) CANCEL PIXEL
return nil
method Dlg1() CLASS SysCtrl
local oDlg
local oGet := array(10)
local cNo_folio := space(10)
local oBtn
&& creamos un registro en blanco
::oQry:GetBlankRow( .F. )
DEFINE DIALOG oDlg SIZE 450,200 title 'BUSCAR POR EL CAMPO ( NO_FOLIO ) METHOD SEEK()'
@ 10, 10 SAY "No. Folio : " OF oDlg pixel
@ 10, 70 GET oGet[ 1 ] VAR cNo_folio of oDlg SIZE 60, 10 PICTURE "@!k" PIXEL UPDATE ;
valid ::ChkFolio( @oGet, @cNo_folio, oDlg )
@ 20, 10 SAY "No. Suscriptor : " OF oDlg pixel
@ 20, 70 GET oGet[ 2 ] VAR ::oQry:no_suscriptor of oDlg SIZE 60, 10 PICTURE "@!k" PIXEL UPDATE
@ 30, 10 SAY "Fecha : " OF oDlg pixel
@ 30, 70 GET oGet[ 3 ] VAR ::oQry:fecha of oDlg SIZE 40, 10 PICTURE "d" PIXEL UPDATE
@ 40, 10 SAY "Nombre : " OF oDlg pixel
@ 40, 70 GET oGet[ 4 ] VAR ::oQry:nombre of oDlg SIZE 150, 10 PICTURE "@!k" PIXEL UPDATE
@ 70, 60 BUTTON oBtn PROMPT "Aceptar" SIZE 60, 12 OF oDlg ;
ACTION ( ::Guardar() ,oDlg:end() ) PIXEL
ACTIVATE DIALOG oDlg CENTERED
return nil
* --------------------------------------------------- *
* dependiendo de la busqueda si no existe *
* lo damos de alta en caso contrario *
* solo lo editamos *
* --------------------------------------------------- *
METHOD Guardar() CLASS SysCtrl
local oWait
WaitOn(space(40), @oWait)
oWait:say(1,1, 'Guardando datos')
oWait:say(3,1, 'espere un momento ...')
oWait:say(5,1, 'Gracias ...')
::oQry:save()
WaitOff(@oWait)
::oGrid:Refresh()
::oGrid:Setfocus()
::oBox:Update()
return nil
METHOD ChkFolio( oGet, cNo_folio, oDlg ) CLASS SysCtrl
LOCAL nSeek
nSeek = ::oQry:Seek( cNo_folio, 2, , , .T.) // lSoft := .T.
if nSeek == 0
msginfo('SI NO EXISTE' + chr(13) +;
'entonces lo AGREGAMOS', 'Usuario ...' )
::oQry:GetBlankRow( .F. )
::oQry:no_folio := cNo_folio
::oQry:fecha := date()
::oQry:lAppend := .t.
else
msginfo('El registro YA EXISTE' + chr(13) +;
'se lo presentamos al usuario' + chr(13) +;
'Para una posible EDICION', 'Usuario ...' )
::oQry:lAppend := .f.
endif
oDlg:update()
RETURN .T.
* ---------------------------------------------------- *
* buscando con el method LOCATE() *
* ---------------------------------------------------- *
method Dlg2() CLASS SysCtrl
local oDlg
local oGet := array(10)
local cNo_folio := space(10)
local oBtn
&& creamos un registro en blanco
::oQry:GetBlankRow( .F. )
DEFINE DIALOG oDlg SIZE 450,200 title 'BUSCAR POR EL CAMPO ( NO_FOLIO ) METHOD LOCATE()'
@ 10, 10 SAY "No. Folio : " OF oDlg pixel
@ 10, 70 GET oGet[ 1 ] VAR cNo_folio of oDlg SIZE 60, 10 PICTURE "@!k" PIXEL UPDATE ;
valid ::ChkFolio2( @oGet, @cNo_folio, oDlg )
@ 20, 10 SAY "No. Suscriptor : " OF oDlg pixel
@ 20, 70 GET oGet[ 2 ] VAR ::oQry:no_suscriptor of oDlg SIZE 60, 10 PICTURE "@!k" PIXEL UPDATE
@ 30, 10 SAY "Fecha : " OF oDlg pixel
@ 30, 70 GET oGet[ 3 ] VAR ::oQry:fecha of oDlg SIZE 40, 10 PICTURE "d" PIXEL UPDATE
@ 40, 10 SAY "Nombre : " OF oDlg pixel
@ 40, 70 GET oGet[ 4 ] VAR ::oQry:nombre of oDlg SIZE 150, 10 PICTURE "@!k" PIXEL UPDATE
@ 70, 60 BUTTON oBtn PROMPT "Aceptar" SIZE 60, 12 OF oDlg ;
ACTION ( ::Guardar() ,oDlg:end() ) PIXEL
ACTIVATE DIALOG oDlg CENTERED
return nil
METHOD ChkFolio2( oGet, cNo_folio, oDlg ) CLASS SysCtrl
LOCAL nSeek
nSeek = ::oQry:Locate( { cNo_folio }, {"no_folio"} )
if nSeek == 0
msginfo('SI NO EXISTE' + chr(13) +;
'entonces lo AGREGAMOS', 'Usuario ...' )
::oQry:GetBlankRow( .F. )
::oQry:no_folio := cNo_folio
::oQry:fecha := date()
::oQry:lAppend := .t.
else
msginfo('El registro YA EXISTE' + chr(13) +;
'se lo presentamos al usuario' + chr(13) +;
'Para una posible EDICION', 'Usuario ...' )
::oQry:lAppend := .f.
endif
oDlg:update()
RETURN .T.
* ---------------------------------------------------- *
* buscando con el method FIND() *
* ---------------------------------------------------- *
method Dlg3() CLASS SysCtrl
local oDlg
local oGet := array(10)
local cNo_folio := space(10)
local oBtn
&& creamos un registro en blanco
::oQry:GetBlankRow( .F. )
DEFINE DIALOG oDlg SIZE 450,200 title 'BUSCAR POR EL CAMPO ( NO_FOLIO ) METHOD FIND()'
@ 10, 10 SAY "No. Folio : " OF oDlg pixel
@ 10, 70 GET oGet[ 1 ] VAR cNo_folio of oDlg SIZE 60, 10 PICTURE "@!k" PIXEL UPDATE ;
valid ::ChkFolio3( @oGet, @cNo_folio, oDlg )
@ 20, 10 SAY "No. Suscriptor : " OF oDlg pixel
@ 20, 70 GET oGet[ 2 ] VAR ::oQry:no_suscriptor of oDlg SIZE 60, 10 PICTURE "@!k" PIXEL UPDATE
@ 30, 10 SAY "Fecha : " OF oDlg pixel
@ 30, 70 GET oGet[ 3 ] VAR ::oQry:fecha of oDlg SIZE 40, 10 PICTURE "d" PIXEL UPDATE
@ 40, 10 SAY "Nombre : " OF oDlg pixel
@ 40, 70 GET oGet[ 4 ] VAR ::oQry:nombre of oDlg SIZE 150, 10 PICTURE "@!k" PIXEL UPDATE
@ 70, 60 BUTTON oBtn PROMPT "Aceptar" SIZE 60, 12 OF oDlg ;
ACTION ( ::Guardar() ,oDlg:end() ) PIXEL
ACTIVATE DIALOG oDlg CENTERED
return nil
METHOD ChkFolio3( oGet, cNo_folio, oDlg ) CLASS SysCtrl
LOCAL nSeek
nSeek = ::oQry:Find( { cNo_folio }, {"no_folio"} )
if nSeek == 0
msginfo('SI NO EXISTE' + chr(13) +;
'entonces lo AGREGAMOS', 'Usuario ...' )
::oQry:GetBlankRow( .F. )
::oQry:no_folio := cNo_folio
::oQry:fecha := date()
::oQry:lAppend := .t.
else
msginfo('El registro YA EXISTE' + chr(13) +;
'se lo presentamos al usuario' + chr(13) +;
'Para una posible EDICION', 'Usuario ...' )
::oQry:lAppend := .f.
endif
oDlg:update()
RETURN .T.
* -------------------------------------------------- *
* FUNCIONES ADICIONALES *
* -------------------------------------------------- *
function waitOn( cCaption, oWait, cTitle ) //simula un waiton de grump
LOCAL nWidth
local lVal := .t.
local oBrush
LOCAL bAction := { || .t. }
default cTitle := "Usuario, un momento por favor"
DEFINE BRUSH oBrush COLOR RGB( 192, 216, 255 ) //rosa
IF cCaption == NIL
DEFINE DIALOG oWait ;
FROM 0,0 TO 12, Len( cTitle ) + 4 ;
STYLE nOr( DS_MODALFRAME, WS_POPUP ) BRUSH oBrush TRANSPARENT
ELSE
DEFINE DIALOG oWait ;
FROM 0,0 TO 12, Max( Len( cCaption ), Len( cTitle ) ) + 4 ;
TITLE cTitle ;
STYLE DS_MODALFRAME BRUSH oBrush TRANSPARENT
ENDIF
oWait:cMsg := cCaption
nWidth := oWait:nRight - oWait:nLeft
//@ 01, 1 BUTTON " &Cancelar " OF oWait SIZE 60, 12 ;
//ACTION ( lVal := .f., oWait:End() )
ACTIVATE DIALOG oWait CENTER ;
ON PAINT oWait:Say( 1, 0, xPadC( oWait:cMsg, nWidth ) ) ;
NOWAIT
sysRefresh()
return (lVal)
function WaitOff( oWait )
IF valtype(oWait) <> 'U' /* waiton has to be called first! */
oWait:end()
oWait := NIL
ENDIF
sysRefresh()
RETURN NIL
#include "setbrw.prg"
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: TDolphin Clase para manejar MySql
Gracias Cesar
Subido al SVN de Dolphin
Subido al SVN de Dolphin
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Re: TDolphin Clase para manejar MySql
excelente Daniel,
vamos avanzando ..
gracias..
vamos avanzando ..
gracias..
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
BUSQUEDA INCREMENTAL CON TDOLPHIN
Colegas, alguien tiene algun ejemplo de busqueda incremental con tedolphin y xbrowse ?
saludos..
saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Re: TDolphin Clase para manejar MySql
Cesar,
No he tenido oportunidad de probar TDolphin para ver como lo maneja, pero normalmente ya que tienes tu recordset creado y con datos, solo es usar alguna de las propiedades del mismo para que te muestre lo que quieras, en este caso seria : filter
oRS:filter := "xcampo LIKE " + " " 'xvalor' " <-- para filtrar ojo con las comillas dobles y las sencillas !
oRS:filter := adFilterNone <-- Para limpiar el filtrado
Para no complicarme la vida con las comillas, hice una funcion que te regresa X valor ya con los apostrofes incluidos, y el manejo se facilita :
oRS:filter := "xcampo LIKE " + myfunc( xvalor ) y me hace lo mismo que la linea anterior similar
Saludos
No he tenido oportunidad de probar TDolphin para ver como lo maneja, pero normalmente ya que tienes tu recordset creado y con datos, solo es usar alguna de las propiedades del mismo para que te muestre lo que quieras, en este caso seria : filter
oRS:filter := "xcampo LIKE " + " " 'xvalor' " <-- para filtrar ojo con las comillas dobles y las sencillas !
oRS:filter := adFilterNone <-- Para limpiar el filtrado
Para no complicarme la vida con las comillas, hice una funcion que te regresa X valor ya con los apostrofes incluidos, y el manejo se facilita :
oRS:filter := "xcampo LIKE " + myfunc( xvalor ) y me hace lo mismo que la linea anterior similar
Saludos
FWH 10.6 + xHarbour + Borland 582
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: TDolphin Clase para manejar MySql
Cesar
La busqueda incremental la hace automaticamente dolphin cuando creas el browse, siempre y cuando este ordenada la columna
Puedes revisar testfw2.prg
te recuerdo que en la version actual de fivewin esta soportado nativamente Dolphin para el xbrowse
La busqueda incremental la hace automaticamente dolphin cuando creas el browse, siempre y cuando este ordenada la columna
Puedes revisar testfw2.prg
te recuerdo que en la version actual de fivewin esta soportado nativamente Dolphin para el xbrowse
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Re: TDolphin Clase para manejar MySql
Gracias Daniel,
efectivamente, el ejemplo testfw2.prg funciona la busqueda incremental,
pero si compilas TESTFW3.PRG que se publico reciente mente y que ya esta en SAMPLES
la qry esta ordenado por el campo NO_FOLIO y no hace la busqueda,
tambien intente cambiar el orden por ' ORDER BY NOMBRE ASC '
pero tampoco hace la busqueda, que falta ?
sera que debo de crear el indice en la tabla previamente?
saludos
efectivamente, el ejemplo testfw2.prg funciona la busqueda incremental,
pero si compilas TESTFW3.PRG que se publico reciente mente y que ya esta en SAMPLES
la qry esta ordenado por el campo NO_FOLIO y no hace la busqueda,
tambien intente cambiar el orden por ' ORDER BY NOMBRE ASC '
pero tampoco hace la busqueda, que falta ?
sera que debo de crear el indice en la tabla previamente?
saludos
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "