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.

Obtener Valor

Foro de Xailer profesional en español
Responder
paco-ssi
Mensajes: 390
Registrado: Lun Feb 07, 2005 4:17 pm

Obtener Valor

Mensaje por paco-ssi »

Como puedo pasar el valor de un campo de una base de tatos a una variable?
He probado con
local nombre1
nombre1 := ::oDbfDatSet1:nombre
Gracias
Paco V
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9441
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Obtener Valor

Mensaje por ignacio »

Paco,
Exactamente como lo has hecho. También puedes usar las siguientes fórmulas:
xValor := oDataSet:FieldGet( nCampo )
xValor := oDataSet:FieldGetByName( cCampo )
Ten en cuenta que si el el DataSet esta bloqueado, es decir, no está en
edición:
xValor := oDataSet:cCampo
ES EXACTAMENTE IGUAL a:
xValor := oDataSet:FieldGet( nCampo )
xValor := oDataSet:FieldGetByName( cCampo )
Sin embargo si el dataset está en edición se devuelve el valor del buffer de
edición:
xValor := oDataSet:cCampo
SE CORRESPONDE a:
xValor := oDataSet:VarGet( nCampo )
Un saludo,
"Paco V." <paco-ssi@usuarios.retecal.es> escribió en el mensaje
news:427e679f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Como puedo pasar el valor de un campo de una base de tatos a una variable?
>
> He probado con
> local nombre1
> nombre1 := ::oDbfDatSet1:nombre
>
> Gracias
> Paco V
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
paco-ssi
Mensajes: 390
Registrado: Lun Feb 07, 2005 4:17 pm

Obtener Valor

Mensaje por paco-ssi »

Ignacio:
Al aplicar lo que me has dicho, me da error. Si bien en el error me aparece
el valor del campo que pido.
Te adjunto el proyecto y una pequeña base de datos.
Paco V
"Paco V." <paco-ssi@usuarios.retecal.es> escribió en el mensaje
news:427e679f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Como puedo pasar el valor de un campo de una base de tatos a una variable?
>
> He probado con
> local nombre1
> nombre1 := ::oDbfDatSet1:nombre
>
> Gracias
> Paco V
>
>


Attached files Gescsc.zip (18.3 KB)Â Ut100.cdx (4 KB)Â Ut100.dbf (381 B)Â
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9441
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Obtener Valor

Mensaje por ignacio »

Paco,
Como se puede ver en tu error.log:
Subsistema: BASE
Código de error: 1004
Estado: .F.
Descripción: Class: 'LOGICAL' has no exported method
Operación: FIELDGETBYNAME
Argumentos: [ 1] = Tipo: C Valor: PARQUE04
Fichero:
La variable que debería tener un dato de tipo objeto DataSet tiene un valor
LOGICO. Es decir, tu oDataSet vale bien falso o verdadero
Un saludo,
"Paco V." <paco-ssi@usuarios.retecal.es> escribió en el mensaje
news:[email=427f9af8@ozsrvnegro.ozlan.local...]427f9af8@ozsrvnegro.ozlan.local...[/email]
> Ignacio:
> Al aplicar lo que me has dicho, me da error. Si bien en el error me
> aparece
> el valor del campo que pido.
>
> Te adjunto el proyecto y una pequeña base de datos.
>
> Paco V
>
> "Paco V." <paco-ssi@usuarios.retecal.es> escribió en el mensaje
> news:427e679f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>> Como puedo pasar el valor de un campo de una base de tatos a una
>> variable?
>>
>> He probado con
>> local nombre1
>> nombre1 := ::oDbfDatSet1:nombre
>>
>> Gracias
>> Paco V
>>
>>
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
paco-ssi
Mensajes: 390
Registrado: Lun Feb 07, 2005 4:17 pm

Obtener Valor

Mensaje por paco-ssi »

No lo entiendo.
La variable la creo como local sin ningun parametro.
Le asigno el valor.
De donde saca que sea un valor logico.
Paco V
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:4280a456$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Paco,
>
> Como se puede ver en tu error.log:
>
> Subsistema: BASE
> Código de error: 1004
> Estado: .F.
> Descripción: Class: 'LOGICAL' has no exported method
> Operación: FIELDGETBYNAME
> Argumentos: [ 1] = Tipo: C Valor: PARQUE04
> Fichero:
>
> La variable que debería tener un dato de tipo objeto DataSet tiene un
valor
> LOGICO. Es decir, tu oDataSet vale bien falso o verdadero
>
> Un saludo,
>
>
> "Paco V." <paco-ssi@usuarios.retecal.es> escribió en el mensaje
> news:[email=427f9af8@ozsrvnegro.ozlan.local...]427f9af8@ozsrvnegro.ozlan.local...[/email]
> > Ignacio:
> > Al aplicar lo que me has dicho, me da error. Si bien en el error me
> > aparece
> > el valor del campo que pido.
> >
> > Te adjunto el proyecto y una pequeña base de datos.
> >
> > Paco V
> >
> > "Paco V." <paco-ssi@usuarios.retecal.es> escribió en el mensaje
> > news:427e679f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> >> Como puedo pasar el valor de un campo de una base de tatos a una
> >> variable?
> >>
> >> He probado con
> >> local nombre1
> >> nombre1 := ::oDbfDatSet1:nombre
> >>
> >> Gracias
> >> Paco V
> >>
> >>
> >
> >
> >
>
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Obtener Valor

Mensaje por jfgimenez »

Paco,
creo que el problema viene de un par de líneas más arriba. En vez de:
IF ::oDbfDataSet1( dbSeek( rtrim(::oEdit1:value) ))
pon:
IF ::oDbfDataSet1:Seek( rtrim(::oEdit1:value) )
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
paco-ssi
Mensajes: 390
Registrado: Lun Feb 07, 2005 4:17 pm

Obtener Valor

Mensaje por paco-ssi »

Jose:
Solucionado con lo que me has indicado, y me basta. Pero:
Solo me va con oDataSet:FieldGet( nCampo )
No me va con oDataSet:FieldGetByName( cCampo )
Cual es el motivo por el que no va con Dbseek?
Paco V
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=4280b548@ozsrvnegro.ozlan.local...]4280b548@ozsrvnegro.ozlan.local...[/email]
> Paco,
>
> creo que el problema viene de un par de líneas más arriba. En vez de:
>
> IF ::oDbfDataSet1( dbSeek( rtrim(::oEdit1:value) ))
>
> pon:
>
> IF ::oDbfDataSet1:Seek( rtrim(::oEdit1:value) )
>
> --
> Un saludo,
>
> José F. Giménez
>
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Obtener Valor

Mensaje por jfgimenez »

Paco,
> Solo me va con oDataSet:FieldGet( nCampo )
> No me va con oDataSet:FieldGetByName( cCampo )
No entiendo lo que quieres decir. Por favor, muestrame el código que estás
probando.
> Cual es el motivo por el que no va con Dbseek?
La línea en cuestión estaba mal escrita. DbSeek() es un función del RDD de
[x]Harbour, no de Xailer. Así que, en la línea:
IF ::oDbfDataSet1( dbSeek( rtrim(::oEdit1:value) ))
lo que estabas haciendo era buscar, con dbseek(), la expresión
rtrim(::oEdit1:value) en el área activa en ese momento, y el resultado es un
valor lógico (.T. o .F.). Vamos, que lo que estabas haciendo es el
equivalente de:
::oDbfDataSet1( .T. )
o
::oDbfDataSet1( .F. )
y como puedes ver, no tiene mucho sentido.
En cambio, Seek() es un método de TDbfDataSet, y la línea:
IF ::oDbfDataSet1:Seek( rtrim(::oEdit1:value) )
cumple su cometido perfectamente.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder