Ayuda com listbox usando ADORDD e comando SQL( Resolvido)

Ayuda com listbox usando ADORDD e comando SQL( Resolvido)

Postby laugusto » Mon Aug 04, 2008 5:11 pm

Preciso de una ayuda con el codigo abajo
Code: Select all  Expand view  RUN

#include "FiveWin.ch"
#include "TSButton.ch"
#Include "SSay.Ch"
#include "Voget.ch"
#include "adordd.ch"

REQUEST ADORDD

#define adOpenForwardOnly 0
#define adOpenKeyset      1
#define adOpenDynamic     2
#define adOpenStatic      3

#define adLockReadOnly        1
#define adLockPessimistic     2
#define adLockOptimistic      3
#define adLockBatchOptimistic 4

//----------------------------------------------------------------------------//
Function Oper201( oWnd )

   local oClient, lAcao
   local oFont

   private oLbx, oDbf, txSql, oDados, Cliente, oBtn

   lAcao  := .f.
   oBtn   := Array(10)

   DEFINE FONT oFont NAME "Arial" SIZE 0, -11
   
   // Abre o banco de dados
   TRY
      oCn := CreateObject( "ADODB.Connection" )
      oCn:ConnectionString := "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=bigdados.mdb"
      oCn:Open()
   CATCH oErr
      Alert( "Error: " + oErr : Operation + " -> " + oErr : Description )
   END
   
   Data := ctod( '06/03/2008' )
   // Filtro para mostrar somente os DADOS que interessam
   txSql  := "SELECT tbclientes.nome, tbclientes.telefone, tbclientes.end," +;
                    "tbpedido.id, tbpedido.hora, tbpedido.Situacao, tbpedido.tipo, tbpedido.Data "+;
             "FROM tbclientes "+;
             "INNER JOIN tbpedido "+;
             "ON tbclientes.id = tbpedido.Cliente " +;
             "WHERE tbpedido.Data = Data"

   oDados := oCn:Execute( txSql )

   DEFINE DIALOG oClient RESOURCE "LISTA001" FONT oFont OF oClient;
      TITLE " Oper201 - Lista de Pedidos" STYLE nOr( DS_SYSMODAL, DS_MODALFRAME )

   REDEFINE LISTBOX oLbx;
      FIELDS oDados:Fields( "id" ):Value,;
             oDados:Fields( "nome" ):Value,;
             oDados:Fields( "telefone" ):Value,;
             oDados:Fields( "End" ):Value,;
             oDados:Fields( "data" ):Value;
      HEADERS 'Id', 'Nome', 'Telefone','Endereço', 'Data';
      ON RIGHT CLICK( oLbx:Report( "TWBrowse report", .T. ),;
                      oDados:MoveFirst() ) ID 100 OF oClient

   // Força o browse trabalhar com celulas
   oLbx:lCellStyle   := .t.
   oLbx:nLineStyle   :=  4
   oLbx:nClrBackHead := nRgb( 255, 128,  64 )
   oLbx:nClrForeHead := nRgb(   0,   0, 185 )
   oLbx:Refresh()

   //--- Inicio dos Botões ---------------------------------------------------//

   REDEFINE SBUTTON oBtn[1] ID 105 OF oClient FONT oFont;
      PROMPT "[Esc]" + CRLF + "Retorna";
      ACTION( lAcao := .t., oClient:End() ) CANCEL;
      TOOLTIP "Clique ou Tecle Esc para Retornar";
      COLORS bTColor, bBColor;
      BORDER TEXT POSITION ON_RIGHT

   //--- Termino dos Botões ---------------------------------------------------//

   // Eventos do Teclado
   oClient:bKeyDown := { |nKey| IF( nKey = VK_ESCAPE,( lAcao := .t., oClient:End() ), nil )}

   ACTIVATE DIALOG oClient CENTER;
      ON INIT( oClient:lHelpIcon := .f.,;
               xSetFocus( oLbx ) );
      VALID( lAcao )

   oFont:End()
   
   oCn:Close()

Return nil


Lo que pasa es que no logro mostrar el contenido del QUERY en el LISTBOX, no me da error, que hago mal?

Gracias en adelantado,
Last edited by laugusto on Wed Aug 06, 2008 3:52 pm, edited 2 times in total.
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
User avatar
laugusto
 
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm

Postby jcaro » Mon Aug 04, 2008 7:16 pm

Hola Augusto:

Te sugiero que en access le asignes identificadores a las tablas que estas usando, por ejemplo:

Code: Select all  Expand view  RUN
         FROM tbclientes AS A , tbpedido AS B

De tal forma que al realizar el  "INNER JOIN "  puedas hacerlo asi:

            "ON  A.id =  B.Cliente  WHERE  A.data = B.data"



Al Access es mejor darle todo muy detallado, no es muy estandar como otros motores de SQL.

Lo otro hace tu consulta mas pequeña y le vas agregando de a poco mas
compejidad hasta que te funcione como deseas.

Hay varias herramientas para realizar consultas previas y luego si funcionan OK, las paso a mi programa.

Por ejemplo - yo utilizo ANYSQL ( funciona a la vez con varios DBMS):

http://www.sqlmaestro.com/products/anysql/maestro/

Saludos,
Juan
==> Pasando a FWH16.04 + Harbour32 + BCC70 + PellesC
=> Abandonando FWH 13.7 + xHarbour + BCC582
http://www.mitaller.cl
jcaro
 
Posts: 270
Joined: Fri Nov 11, 2005 7:39 pm

Postby laugusto » Mon Aug 04, 2008 7:40 pm

Gracias por su aporte Juan, voy probalo.

Saludos desde Brasil,
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
User avatar
laugusto
 
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm

Postby laugusto » Tue Aug 05, 2008 12:44 pm

Buenos dias,

Juan, no me mostra el contenido del query en el listbox. Si hago el SELECT en ACESS me funciona de pronto.

A ver si alguem me ayuda con esto.

Gracias en adelantado,
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
User avatar
laugusto
 
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm

Postby Antonio Linares » Tue Aug 05, 2008 12:46 pm

Luiz,

Nosotros no usamos ADO practicamente, salvo cuando construimos el ADORDD.

Siento no poder serte de ayuda. Busca en estos foros y los usuarios más activos de ADO seguro que te podran ayudar.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby laugusto » Tue Aug 05, 2008 1:57 pm

Gracias Maestro por contestarme.

Sigo peleando pero no logro exito, si alguem puder ayudarme, les agradesco.

Saludos,
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
User avatar
laugusto
 
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm

Postby jcaro » Tue Aug 05, 2008 2:08 pm

Aqui te dejo un ejemplo que creo Enrico: , es muy explicativo y funciona bien con un listbox:


#include "Fivewin.ch"
#include "Tcbrowse.ch"


FUNCTION MAIN()

LOCAL oRs, oErr

oRs = CREATEOBJECT( "ADODB.Recordset" )

TRY
oRS:Open( "SELECT * FROM Clienti", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Clientes.mdb", 1, 3 )
CATCH oErr
? oErr:Description
RETURN NIL
END TRY

WBROWSERECORDSET( oRs )
TCBROWSERECORDSET( oRs )

oRs:Close()

RETURN NIL


STATIC FUNCTION WBROWSERECORDSET( oRs )

LOCAL oDlg, oBrw, nRec

DEFINE DIALOG oDlg SIZE 300, 300

@ 0, 0 LISTBOX oBrw FIELDS oRs:Fields( "Cliente" ):Value;
HEADERS "CLIENTES";
ON RIGHT CLICK ( nRec := oRs:AbsolutePosition,;
oBrw:Report( "TWBrowse report", .T. ),;
oRs:MoveFirst(),;
oRs:Move( nRec - 1 ) )

oBrw:bLogicLen = { || oRs:RecordCount }
oBrw:bGoTop = { || oRs:MoveFirst() }
oBrw:bGoBottom = { || oRs:MoveLast() }
oBrw:bSkip = { | nSkip | Skipper( oRs, nSkip ) }
oBrw:cAlias = "ARRAY"

ACTIVATE DIALOG oDlg ON INIT oDlg:SetControl( oBrw ) CENTER

RETURN NIL


STATIC FUNCTION TCBROWSERECORDSET( oRs )

LOCAL oDlg, oBrw, oCol, nRec

DEFINE DIALOG oDlg SIZE 300, 300

@ 0, 0 BROWSE oBrw;
ON RIGHT CLICK ( nRec := oRs:AbsolutePosition,;
oBrw:Report( "TWBrowse report", .T. ),;
oRs:MoveFirst(),;
oRs:Move( nRec - 1 ) )

ADD COLUMN TO oBrw;
DATA oRs:Fields( "Cliente" ):Value;
HEADER "CLIENTI"

oBrw:lCellStyle = .T.

oBrw:bLogicLen = { || oRs:RecordCount }
oBrw:bGoTop = { || oRs:MoveFirst() }
oBrw:bGoBottom = { || oRs:MoveLast() }
oBrw:bSkip = { | nSkip | Skipper( oRs, nSkip ) }
oBrw:cAlias = "ARRAY"

ACTIVATE DIALOG oDlg ON INIT oDlg:SetControl( oBrw ) CENTER

RETURN NIL


STATIC FUNCTION SKIPPER( oRs, nSkip )

LOCAL nRec := oRs:AbsolutePosition

oRs:Move( nSkip )

IF oRs:EOF; oRs:MoveLast(); ENDIF
IF oRs:BOF; oRs:MoveFirst(); ENDIF

RETURN ( oRs:AbsolutePosition - nRec )


Espero que esto te ayude mas, Saludos
Juan
==> Pasando a FWH16.04 + Harbour32 + BCC70 + PellesC
=> Abandonando FWH 13.7 + xHarbour + BCC582
http://www.mitaller.cl
jcaro
 
Posts: 270
Joined: Fri Nov 11, 2005 7:39 pm

Postby laugusto » Tue Aug 05, 2008 2:15 pm

Gracias Juan por tu aporte, vou testar.

Saludos,
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
User avatar
laugusto
 
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm


Return to FiveWin para Harbour/xHarbour

Who is online

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