FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Pequeña consulta ADORDD
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Pequeña consulta ADORDD
Posted: Fri Jun 20, 2008 08:30 AM
Hola amigos

Ya me voy enterando y haciendo cosas con ADORDD, ahora estoy un poco atascado en el tema de filtros.

Quiero hacer un filtro muy sencillo, y éste me funciona si lo hago metiendole el valor a filtrar directamente, pero si lo hago con una variable no se como hacerlo, me explico.

Quiero filtrar un campo expedicion que tenga el valor "0014", si hago lo siguiente funciona
  SET FILTER TO "expedicion ='00014'"


Pero claro, yo quiero dar este valor mediante un get y una variable a que que llamo valor, y he probado así y no me va:
  SET FILTER TO "expedicion"=comienzo


Tampoco me va asi
  SET FILTER TO "expedicion =(comienzo)"


Y ya me pierdo en probar.

Saludos

Jose Luis
--------------------------

Saludos



Jose Luis
Posts: 838
Joined: Wed Aug 22, 2007 10:09 AM
Pequeña consulta ADORDD
Posted: Fri Jun 20, 2008 08:47 AM

SET FILTER TO FIELD->EXPEDICION = cVariable

Un saludo

Saludos / Regards,



FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Pequeña consulta ADORDD
Posted: Fri Jun 20, 2008 09:17 AM

Hola

Ya probé como me dices pero nada, sólo me funciona cuando como te digo, utilizo directamente el valor

Saludos

Jose Luis

--------------------------

Saludos



Jose Luis
Posts: 205
Joined: Fri Oct 07, 2005 05:07 PM
Pequeña consulta ADORDD
Posted: Fri Jun 20, 2008 09:49 AM

SET FILTER TO "expedicion == '" + cvariable + "'"

Saludos/regards

RenOmaS



skype: americo.balboa
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Pequeña consulta ADORDD
Posted: Fri Jun 20, 2008 09:49 AM
Jose Luis,

Prueba asi:
SET FILTER TO "expedicion='" + comienzo + "'"
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Pequeña consulta ADORDD
Posted: Sun Jun 22, 2008 06:02 PM
Antonio

Ya lo había intentado de esa y varias otras formas, pero los resultados son:

- Si hago
SET FILTER TO "expedicion = '000410001330'"

Funciona el listbox que viene después perfectamente.

- Pero si hago
SET FILTER TO "expedicion='" + comienzo + "'"


Me da el siguiente error en el listbox:
    Application
    ===========
    Path and name: C:\fuentes\xharbour\GESPAQ08\gespaqn.Exe (32 bits)
    Size: 1,012,736 bytes
    Time from start: 0 hours 0 mins 24 secs
    Error occurred at: 22/06/08, 19:56:51
    Error description: Error ADODB.Recordset/16389 E_FAIL: MOVEFIRST
    Args:

    Stack Calls
    ===========
    Called from: win32ole.prg => TOLEAUTO:MOVEFIRST(0)
    Called from: => ADO_SKIPRAW(383)
    Called from: => DBSKIP(0)
    Called from: wbrowse.prg => TWBROWSE:PAINT(1048)
    Called from: wbrowse.prg => TWBROWSE:DISPLAY(2880)
    Called from: CONTROL.PRG => TWBROWSE:HANDLEEVENT(0)[/list:u]

    El codigo fuente de todo es:
    #include "FiveWin.ch"
    #include "adordd.ch"
    #include "btnget.ch"
    
    REQUEST ADORDD
    Memvar Publicas
    function access()
    local oDlg,olbx
    local Titulo:="Paquetes mecanizados"
    local base:="Registro.mdb"
    local comienzo:=space(12),final,oini,ofin,oboton,oboton1
    local continua:=.F.,i,osay
    
      DEFINE DIALOG oDlg RESOURCE "DESDEFEHORA" BRUSH Publicas:oBrush1 TRANSPARENT Font Publicas:oWPpal:ofont
      for i = 10 to 11
        REDEFINE SAY osay ID i OF oDlg
      next i
      REDEFINE BTNGET oini VAR comienzo ID 101 OF oDlg
      REDEFINE BTNGET ofin VAR final ID 102 OF oDlg
      REDEFINE BUTTON oboton ID 550 OF oDlg PROMPT "Aceptar" ;
    				ACTION (Continua := .T., oDlg:End())
      REDEFINE BUTTON oboton1 ID 551 OF oDlg PROMPT "Cancelar" ;
                                    ACTION (oDlg:End()) CANCEL
      ACTIVATE DIALOG oDlg CENTERED
    
    if Continua
      USE (Publicas:rMDB+base) VIA "ADORDD" alias paquetes NEW TABLE "UltimoRegistro" 
    if paquetes->(Recno())>=1
      //SET FILTER TO "expedicion = '000410001330'"
       SET FILTER TO "expedicion='" + comienzo + "'"
      DEFINE DIALOG oDlg FROM 1, 1 TO 25, 79 
      oDlg:cTitle:=titulo
      @ 1, 1 LISTBOX oLbx FIELDS paquetes->UFecha,;  
      paquetes->Expedicion                            ,;
      paquetes->UPeso          ,;
      (paquetes->UVolumen),;
      paquetes->Bulto                                   ;
      HEADERS "Fecha","Codigo","Peso","Volumen","Bulto"; 
      FIELDSIZES 80,200,80,80,80; 
      SIZE 284, 137 OF oDlg 
      oLbx:nLineStyle := 1
      oLbx:nClrBackHead := RGB(248,191,36)
      oLbx:bTextColor:= {|nRow,nCol,nStyle| If( nStyle==0 .and. nCol==8,CLR_HRED, ) }
      oLbx:nClrPane:={||iIF((oLbx:cAlias)->(OrdKeyNo())%2==0,nRGB(242,247,252),nRGB(226,226,208))}
    
      @154,08  BTNBMP LEFT PROMPT " Agregar"   SIZE 50,19 OF oDlg RESOURCE "grabasql" // ACTION (Descarga(aAlias),oDlg:End())
      @154,67  BTNBMP LEFT PROMPT " Modificar" SIZE 50,19 OF oDlg RESOURCE "modifisql" ACTION oDlg:End() 
      @154,125 BTNBMP LEFT PROMPT " Borrar"    SIZE 50,19 OF oDlg RESOURCE "borrasql"  //ACTION BorraU(oLbx ) 
      @154,184 BTNBMP LEFT PROMPT " Buscar"    SIZE 50,19 OF oDlg RESOURCE "buscasql"  //ACTION BuscaU(oLbx,3,"Color") 
      @154,242 BTNBMP LEFT PROMPT " Salir"     SIZE 50,19 OF oDlg RESOURCE "salirsql"  ACTION (oDlg:End())
    
      ACTIVATE DIALOG oDlg CENTERED 
    else
     msgstop("No hay Datos","ATENCION")
    endif
    set filter to
    paquetes->(Dbclosearea())
    endif
    return nil


    Que puede ser?

    Saludos

    Jose Luis
--------------------------

Saludos



Jose Luis
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Pequeña consulta ADORDD
Posted: Mon Jun 23, 2008 08:30 AM

Jose Luis,

Prueba a llamar a la función directamente en vez de usar el comando:

dbSetFilter( <{exp}>, <"exp"> )

Posiblemente el fallo viene del preprocesado. Mira el fichero PPO generado al usar el comando, compilando con /p

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Pequeña consulta ADORDD
Posted: Mon Jun 23, 2008 08:33 AM

Prueba asi tambien:

cCondicion = "expedicion='" + comienzo + "'"

SET FILTER TO cCondicion

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion