In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

HERENCIA EN TSQLQUERY

Foro de Xailer profesional en español
Responder
Martin del Angel[1]
Mensajes: 114
Registrado: Dom Dic 18, 2005 7:50 pm

HERENCIA EN TSQLQUERY

Mensaje por Martin del Angel[1] »

Hola , Buenos dias a Todos!
1. - Porque TSqlQuery no heredo los Metodos de TDbfDataSet ?
cCU1:=SUBS(::oDSCATCLI:FIELDGETBYNAME('CtaConCli'),1,4)
cCU2:=SUBS(::oDSCATCLI:FIELDGETBYNAME('CtaConCli'),5,4)
cCU3:=SUBS(::oDSCATCLI:FIELDGETBYNAME('CtaConCli'),9,4)
cCU4:=SUBS(::oDSCATCLI:FIELDGETBYNAME('CtaConCli'),13,4)
cCUENTA:=cCU1+cCU2+cCU3+cCU4
::oDSCATCUENTAS:SELECT()
LOCATE FOR
::oDSCATCUENTAS:FIELDGETBYNAME('CtaMay')+::oDSCATCUENTAS:FIE LDGETBYNAME('SubCta')+;
::oDSCATCUENTAS:FIELDGETBYNAME('SSbCta')+::oDSCATCUENTAS:FIE LDGETBYNAME('SSSCta')=;
cCU1+cCU2+cCU3+cCU4
IF FOUND()
cDESCR:=::oDSCATCUENTAS:FIELDGETBYNAME('Descripcion')
ELSE
Application:lbusy:=.F.
MsgStop('No encontre cuenta '+cCUENTA,'Error')
ENDIF
Ahora este codigo no me funciona ya que el Metodo Locate() es Heredado de
TDataSet y se comporta diferente que el Metodo Locate() del TDbfDataSet.
El Metodo Locate() del TDataSet Acepta la siguiente sintaxis :
LOCATE('CtaMay='+cCUENTA) , solo acepta una columna en la busqueda, no
permite varias columnas
Como resuelvo el problema de buscar varias columnas como el ejemplo de
arriba?
Tendre que usar nuevamente TOdbcDataSet ?
SIGUIENTE PREGUNTA ?
2. - La Variable aSucursales es una varibale Publica definida en el programa
principal, la cual utilizo en otro modulo, cuando compilo me sale el
siguite Warning
Compilando ProcesaCortes.prg...
ProcesaCortes.prg(163) Warning W0002 Ambiguous reference, assuming memvar:
'ASUCURSALES'
Porque si esta definida como variable publica?
ademas en las propiedades del Proyecto en Opciones/Xharbour tengo
seleccionada la opcion declaracion automatica de variables.
Gracias
Avatar de Usuario
jasm
Mensajes: 447
Registrado: Mar Jul 08, 2008 8:12 pm

HERENCIA EN TSQLQUERY

Mensaje por jasm »

Martin,
> 2. - La Variable aSucursales es una varibale Publica definida en el programa
> principal, la cual utilizo en otro modulo, cuando compilo me sale el
> siguite Warning
>
> Compilando ProcesaCortes.prg...
> ProcesaCortes.prg(163) Warning W0002 Ambiguous reference, assuming memvar:
> 'ASUCURSALES'
>
> Porque si esta definida como variable publica?
>
> ademas en las propiedades del Proyecto en Opciones/Xharbour tengo
> seleccionada la opcion declaracion automatica de variables.
Lo mejor que puedes hacer para usar variables de ámbito global en Xailer
es usar AppData. AppData es una clase visible por todos los módulos de
la aplicación.
Para añadir una DATA a AppData:
AppData:AddData( "aSucursales", {} )
Después la usas en cualquier sitio así­:
AppData:aSucursales
Saludos
Jose A. Suarez
>
>
> Gracias
>
>
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9457
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

HERENCIA EN TSQLQUERY

Mensaje por ignacio »

Martin,
>> 1. - Porque TSqlQuery no heredo los Metodos de TDbfDataSet ?
Pues porque no hereda de TDbfDataSet, sino de TDataSet directamente
> Ahora este codigo no me funciona ya que el Metodo Locate() es Heredado
> de TDataSet y se comporta diferente que el Metodo Locate() del
> TDbfDataSet.
> El Metodo Locate() del TDataSet Acepta la siguiente sintaxis :
> LOCATE('CtaMay='+cCUENTA) , solo acepta una columna en la busqueda, no
> permite varias columnas
El método Locate del TDataSet se basa en la clásica instrucción WHERE de
SQL. Sin embargo en TDbfDataSet se base en el propio comando LOCATE de
Clipper. (En esto consiste la característica del polimorfismo en OOP)
> Como resuelvo el problema de buscar varias columnas como el ejemplo de
> arriba?
> Tendre que usar nuevamente TOdbcDataSet ?
Consulte cualquier documentación SQL del funcionamiento de la cláusula WHERE
en una instrucción SELECT
TOdbcDataSet seguirá por compatibilidad. Si ya tiene hecha su aplicación con
esa clase no lo cambie.
> 2. - La Variable aSucursales es una varibale Publica definida en el
> programa principal, la cual utilizo en otro modulo, cuando compilo me
> sale el siguite Warning
Revise la documentación de Clipper referente a la expresión MEMVAR:
http://www.itlnet.net/programming/progr ... e/c53g01c/ ng1082ed.html
> ademas en las propiedades del Proyecto en Opciones/Xharbour tengo
> seleccionada la opcion declaracion automatica de variables.
Es un 'warning'. Si quiere evitarlo, que no se lo recomiendo, simplemente
reduzca el nivel de avisos en la configuración del proyecto.
Un saludo,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
>
> 2. - La Variable aSucursales es una varibale Publica definida en el
> programa principal, la cual utilizo en otro modulo, cuando compilo me
> sale el siguite Warning
>
> Compilando ProcesaCortes.prg...
> ProcesaCortes.prg(163) Warning W0002 Ambiguous reference, assuming
> memvar: 'ASUCURSALES'
>
> Porque si esta definida como variable publica?
>
> ademas en las propiedades del Proyecto en Opciones/Xharbour tengo
> seleccionada la opcion declaracion automatica de variables.
>
>
> Gracias
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder