Hola Gente:
Estoy tratando de trabajar con MySql y xHarbour 1.0.0 Modo Consola y
bueno haciendo mis primeros pininos y logré conectarme a la Base de
Datos pero cuando ejecuto una consulta y la levanto a un Tbrowse
solo me muestra una línea y al moverme con las teclas de
arriba/abajo/PgDn/PgUp veo que si me presenta los datos pero siempre
en una sola línea.
Aquí pego el pequeño programa para que algún caritativo me ayude.
#include "TBrowse.ch"
#include "INKEY.CH"
#DEFINE adLockOptimistic 3
#DEFINE adOpenKeyset 2
Function Main()
/************ Abrir Conexion ************/
oMiConexion :=tOleAuto():New("ADODB.Connection")
oMiConexion:ConnectionString := "Provider=MSDASQL.1;Persist
Security Info=False;User ID=root;Data Source=MYSQLSIC"
oMiConexion:Open()
/************ Crear Recordset ************/
oRecordSet := tOleAuto():New("ADODB.recordset")
oRecordSet:LockType := adLockOptimistic
oRecordSet:CursorType := adOpenKeyset
oRecordSet:ActiveConnection(oMiconexion)
oRecordSet:Source := "Select * from actor"
oRecordSet:Open()
oRecordSet:MoveFirst()
/************ Crear TBrowse ************/
oBrw := TBrowseNew(06,06,20,70)
oBrw:goBottomBlock := {|| oRecordSet:MoveLast()}
oBrw:goTopBlock := {|| oRecordSet:MoveFirst()}
oBrw:SkipBlock := {|nSkip| RecordSetSkip(nSkip)}
oBrw:AddColumn(TBColumnNew("Codigo",{|| oRecordSet:Fields
(0):value}))
oBrw:AddColumn(TBColumnNew("Nombres",{|| oRecordSet:Fields
(1):value}))
oBrw:AddColumn(TBColumnNew("Direccion",{|| oRecordSet:Fields
(2):value}))
/************ Display TBrowse ************/
WHILE .T.
oBrw:FORCESTABLE()
tecla := INKEY(0)
IF oBrw:HITBOTTOM .OR. oBrw:HITTOP
?? CHR(7)
oBrw:HITBOTTOM := .F.
oBrw:HITTOP := .F.
ENDIF
DO CASE
CASE tecla = K_ESC
Exit
CASE tecla = K_UP
oBrw:REFRESHCURRENT()
oBrw:UP()
CASE tecla = K_DOWN
obrw:REFRESHCURRENT()
obrw:DOWN()
CASE tecla = K_PGUP
obrw:REFRESHCURRENT()
obrw:PAGEUP()
CASE tecla = K_LEFT
obrw:REFRESHCURRENT()
obrw:LEFT()
CASE tecla = K_RIGHT
obrw:REFRESHCURRENT()
obrw:RIGHT()
CASE tecla = K_PGDN
obrw:REFRESHCURRENT()
obrw:PAGEDOWN()
CASE tecla = K_CTRL_HOME
obrw:REFRESHCURENT()
obrw:GOTOP()
CASE tecla = K_CTRL_END
obrw:REFRESHCURRENT()
obrw:GOBOTTOM()
ENDCASE
ENDDO
/************ Cerrar Conexion ************/
oRecordSet:Close()
oMiConexion:Close()
Return(Nil)
Static Function RecordSetSkip(nSkip)
LOCAL nRec := oRecordSet:AbsolutePosition
oRecordSet:Move( nSkip )
IF oRecordSet:EOF; oRecordSet:MoveLast(); ENDIF
IF oRecordSet:BOF; oRecordSet:MoveFirst(); ENDIF
Return (oRecordSet:AbsolutePosition - nRec)
Saludos.
Atte.
Lucho Montero.