FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Ayuda com listbox usando ADORDD e comando SQL( Resolvido)
Posts: 62
Joined: Fri Apr 28, 2006 04:06 PM
Ayuda com listbox usando ADORDD e comando SQL( Resolvido)
Posted: Mon Aug 04, 2008 05:11 PM
Preciso de una ayuda con el codigo abajo
#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,
Luiz Augusto

São José dos Pinhais - PR

BRASIL

fwh + harbour + workshop + velhos bat´s
Posts: 270
Joined: Fri Nov 11, 2005 07:39 PM
Ayuda com listbox usando ADORDD e comando SQL( Resolvido)
Posted: Mon Aug 04, 2008 07:16 PM
Hola Augusto:

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

         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
Posts: 62
Joined: Fri Apr 28, 2006 04:06 PM
Ayuda com listbox usando ADORDD e comando SQL( Resolvido)
Posted: Mon Aug 04, 2008 07: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
Posts: 62
Joined: Fri Apr 28, 2006 04:06 PM
Ayuda com listbox usando ADORDD e comando SQL( Resolvido)
Posted: 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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Ayuda com listbox usando ADORDD e comando SQL( Resolvido)
Posted: 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
Posts: 62
Joined: Fri Apr 28, 2006 04:06 PM
Ayuda com listbox usando ADORDD e comando SQL( Resolvido)
Posted: Tue Aug 05, 2008 01: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
Posts: 270
Joined: Fri Nov 11, 2005 07:39 PM
Ayuda com listbox usando ADORDD e comando SQL( Resolvido)
Posted: Tue Aug 05, 2008 02: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
Posts: 62
Joined: Fri Apr 28, 2006 04:06 PM
Ayuda com listbox usando ADORDD e comando SQL( Resolvido)
Posted: Tue Aug 05, 2008 02: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

Continue the discussion