txbrowse ado dbf

txbrowse ado dbf

Postby luisduque » Thu May 22, 2008 3:48 am

este codigo trabaja bien con dbf pero con ado solo se ve el primer registro

coloque una variable lAdo=.T. Para probar con mysql y lAdo=.f. con DBF
el me muestra bien la de Mysql si la hago sin definir las columnas


cual puede ser el error. Gracias de antemano


#include "Report.ch"
#include "FiveWin.ch"
#include "xBrowse.ch"

STATIC oWnd

//-------------------------------------------------------------------------------------
Function Main()

SET EPOCH TO 1920
SET DATE FORMAT "dd/mm/yyyy"
SET WRAP ON

REQUEST DBFCDX

If !Conectar()
Return Nil
Endif

maestro()

Return Nil

//-----------------------------------------------------------------------------
Function conectar()
Local Retorno:=.F.
LOCAL oErr,oCs
Public oCn

TRY
oCn:= CreateObject( "ADODB.Connection" )
oCs:= "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=ecst06; UID=root; PWD=10157763"
oCn:Open(oCs)
Retorno:=.T.
CATCH oErr
MSGAlert( "Error: " + oErr:Operation + " -> " + oErr:Description )
Retorno:=.F.
END

Return Retorno


Function maestro()
local oBrw
Local cSelect:= "select maestro.FECASI, maestro.ASIENTO, maestro.DESCASI, maestro.TOTDEB, maestro.TOTHAB from maestro"

lAdo := .t.

If lAdo
oDbDet:=TAdoBase():New( oCn, "maestro", cSelect )
Else
use maestro new
select maestro
EndIf

DEFINE WINDOW oWnd FROM 1, 1 TO 700,950 PIXEL TITLE "prueba adobase"

oBrw := TXBrowse():New( oWnd )

oBrw:nTop := 20
oBrw:nLeft := 10
oBrw:nBottom := 650
oBrw:nRight := 900

oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:nRowDividerStyle := LINESTYLE_BLACK
oBrw:nHeaderLines := 2
oBrw:nFooterLines := 2
oBrw:nDataLines := 1
oBrw:lColDividerComplete := .T.
oBrw:lFooter := .t.

If lAdo
oBrw:AddCol():bEditValue := { || oDbDet:fecasi }
oBrw:AddCol():bEditValue := { || oDbDet:fecasi }
oBrw:AddCol():bEditValue := { || oDbDet:asiento }
oBrw:AddCol():bEditValue := { || oDbDet:descasi }
oBrw:AddCol():bEditValue := { || oDbDet:totdeb }
oBrw:AddCol():bEditValue := { || oDbDet:tothab }
Else
oBrw:AddCol():bEditValue := { || fecasi }
oBrw:AddCol():bEditValue := { || asiento }
oBrw:AddCol():bEditValue := { || descasi }
oBrw:AddCol():bEditValue := { || totdeb }
oBrw:AddCol():bEditValue := { || tothab }
EndIf



oBrw:cToolTip = "Este es el poder del xBrowser de fwh"

If lAdo
oBrw:SetAdo(oDbDet:oRcs)
Else
oBrw:SetRDD()
EndIf

//oBrw:Refresh( .t. )

oBrw:CreateFromCode()

ACTIVATE WINDOW oWnd

If lAdo
oDbDet:Close()
EndIf

RETURN NIL
luisduque
 
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela

Postby Adolfo » Thu May 22, 2008 2:22 pm

Te falta el SETADO(), revisa esa funcion en el codigo fuente de tu version de xBrowse, y pon en .t. la opcion lAddCols

SetAdO( oRs, lAddCols, lAutoOrder, aFldNames )

y puedes pasarle el arreglo de tus campos con aFLdNames
es mejor segun mi parecer

Eso
;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
User avatar
Adolfo
 
Posts: 860
Joined: Tue Oct 11, 2005 11:57 am
Location: Chile

Hola Adolfo

Postby luisduque » Fri May 23, 2008 3:11 am

Si estoy utilizando SetAdo() lo que no entiendo es porque sirve con dbf y no con MySql, si lo pruebo sin
oBrw:AddCol():bEditValue := { || oDbDet:fecasi }
oBrw:AddCol():bEditValue := { || oDbDet:asiento }
oBrw:AddCol():bEditValue := { || oDbDet:descasi }
oBrw:AddCol():bEditValue := { || oDbDet:totdeb }
oBrw:AddCol():bEditValue := { || oDbDet:tothab }
me sirve en forma correcta y me salen todos los registros bien
y si le agrego a SetAdo() mas columnas pero no soluciono nada

en tal caso como puedo hacer si quiero mostrar de una base de datos solo dos campos

Gracias
luisduque
 
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 41 guests