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.

Peleando

SQL databases
Responder
Paco V
Mensajes: 380
Registrado: Jue Oct 27, 2005 9:08 am

Peleando

Mensaje por Paco V »

Hasta hace unos dias, trabajaba con DBF. Ahora estoy cambiando a MySql.
Yo hacia esto para obtener un informe que combinaba las dos dbf:
DO WHILE !::oDbfDataset1:eof()
IF ::oDbfDataSet2:Seek( ::oDbfDataSet1:Matricula)
:TextOut(100,400+n, ::oDbfDataSet1:Matricula)
:TextOut(275,400+n, substr(::oDbfDataSet1:Nombre,1,25))
do while ::oDbfDataSet2:Matricula =::oDbfDataSet1:Matricula
:TextOut(1050,400+n,substr(::oDbfDataSet2:fecha,7,2)+"-"+
substr(::oDbfDataSet2:fecha,5,2))
::oDbfDataSet2:skip()
n := n+50
if n > 2350
n := 100
endif
endd
elseIF !::oDbfDataSet2:Seek( ::oDbfDataSet1:Matricula)
:TextOut(100,400+n, ::oDbfDataSet1:Matricula)
:TextOut(275,400+n, substr(::oDbfDataSet1:Nombre,1,25))
:TextOut(875,400+n, ::oDbfDataSet1:telefono)
n := n+50
endif
::oDbfDataSet1:skip()
enddo
Alguien me podia hechar una mano para hacer esto con MySql.
No tengo ni idea.
Gracias
Paco V
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Peleando

Mensaje por Xevi »

Paco,
En tu condicionante IF...ELSE...ENDIF, estás repitiendo la búsqueda de
:Matrícula.
En else puedes sacarle ... IF !::oDbfDataSet2:Seek(
::oDbfDataSet1:Matricula)
pues ya lo has comprobado en IF y si no IF será ELSE... ¿no crees???
Para MySql, no me he metido en ello, pero son mis deberes a corto...
Creo que el planteamiento de este informe deberías cargarlo antes en un
recorset que haga referencia a las dos tablas.
Pero esto seguro que alguien entendido en SQL te lo aclara.
Un Saludo,
Xevi.
"Paco V" <ssi@ono.com> escribió en el mensaje
news:46441316$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>
> Hasta hace unos dias, trabajaba con DBF. Ahora estoy cambiando a MySql.
> Yo hacia esto para obtener un informe que combinaba las dos dbf:
>
> DO WHILE !::oDbfDataset1:eof()
> IF ::oDbfDataSet2:Seek( ::oDbfDataSet1:Matricula)
> :TextOut(100,400+n, ::oDbfDataSet1:Matricula)
> :TextOut(275,400+n, substr(::oDbfDataSet1:Nombre,1,25))
> do while ::oDbfDataSet2:Matricula =::oDbfDataSet1:Matricula
> :TextOut(1050,400+n,substr(::oDbfDataSet2:fecha,7,2)+"-"+
> substr(::oDbfDataSet2:fecha,5,2))
> ::oDbfDataSet2:skip()
> n := n+50
> if n > 2350
> n := 100
> endif
> endd
> elseIF !::oDbfDataSet2:Seek( ::oDbfDataSet1:Matricula)
> :TextOut(100,400+n, ::oDbfDataSet1:Matricula)
> :TextOut(275,400+n, substr(::oDbfDataSet1:Nombre,1,25))
> :TextOut(875,400+n, ::oDbfDataSet1:telefono)
> n := n+50
> endif
> ::oDbfDataSet1:skip()
> enddo
>
> Alguien me podia hechar una mano para hacer esto con MySql.
> No tengo ni idea.
>
> Gracias
>
> Paco V
desarrollo
Mensajes: 109
Registrado: Lun Abr 02, 2007 10:12 am

Peleando

Mensaje por desarrollo »

Paco,
Crea una SELECT que combine las tablas con INNER JOIN (o LEFT JOIN) y
olvidate de los SEEK.
Es el mismo caso que se le planteaba a Juanjo cuando nos reunimos en
Miranda.
Saludos
Jose Alfonso Suarez Moreno
"Paco V" <ssi@ono.com> escribió en el mensaje
news:46441316$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>
> Hasta hace unos dias, trabajaba con DBF. Ahora estoy cambiando a MySql.
> Yo hacia esto para obtener un informe que combinaba las dos dbf:
>
> DO WHILE !::oDbfDataset1:eof()
> IF ::oDbfDataSet2:Seek( ::oDbfDataSet1:Matricula)
> :TextOut(100,400+n, ::oDbfDataSet1:Matricula)
> :TextOut(275,400+n, substr(::oDbfDataSet1:Nombre,1,25))
> do while ::oDbfDataSet2:Matricula =::oDbfDataSet1:Matricula
> :TextOut(1050,400+n,substr(::oDbfDataSet2:fecha,7,2)+"-"+
> substr(::oDbfDataSet2:fecha,5,2))
> ::oDbfDataSet2:skip()
> n := n+50
> if n > 2350
> n := 100
> endif
> endd
> elseIF !::oDbfDataSet2:Seek( ::oDbfDataSet1:Matricula)
> :TextOut(100,400+n, ::oDbfDataSet1:Matricula)
> :TextOut(275,400+n, substr(::oDbfDataSet1:Nombre,1,25))
> :TextOut(875,400+n, ::oDbfDataSet1:telefono)
> n := n+50
> endif
> ::oDbfDataSet1:skip()
> enddo
>
> Alguien me podia hechar una mano para hacer esto con MySql.
> No tengo ni idea.
>
> Gracias
>
> Paco V
Paco V
Mensajes: 380
Registrado: Jue Oct 27, 2005 9:08 am

Peleando

Mensaje por Paco V »

Xevi, era un recorte de un buen rollo.
Gracias.
Paco V
"Xevi" <xevicomas@gmail.com> wrote:
>Paco,
>
>En tu condicionante IF...ELSE...ENDIF, estás repitiendo la búsqueda de
>:Matrícula.
>
>En else puedes sacarle ... IF !::oDbfDataSet2:Seek(
>::oDbfDataSet1:Matricula)
>pues ya lo has comprobado en IF y si no IF será ELSE... ¿no crees???
>
>Para MySql, no me he metido en ello, pero son mis deberes a corto...
>Creo que el planteamiento de este informe deberías cargarlo antes en un
>recorset que haga referencia a las dos tablas.
>
>Pero esto seguro que alguien entendido en SQL te lo aclara.
>
>Un Saludo,
>Xevi.
>
>
>"Paco V" <ssi@ono.com> escribió en el mensaje
>news:46441316$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>>
>> Hasta hace unos dias, trabajaba con DBF. Ahora estoy cambiando a MySql.
>> Yo hacia esto para obtener un informe que combinaba las dos dbf:
>>
>> DO WHILE !::oDbfDataset1:eof()
>> IF ::oDbfDataSet2:Seek( ::oDbfDataSet1:Matricula)
>> :TextOut(100,400+n, ::oDbfDataSet1:Matricula)
>> :TextOut(275,400+n, substr(::oDbfDataSet1:Nombre,1,25))
>> do while ::oDbfDataSet2:Matricula =::oDbfDataSet1:Matricula
>> :TextOut(1050,400+n,substr(::oDbfDataSet2:fecha,7,2)+"-"+
>> substr(::oDbfDataSet2:fecha,5,2))
>> ::oDbfDataSet2:skip()
>> n := n+50
>> if n > 2350
>> n := 100
>> endif
>> endd
>> elseIF !::oDbfDataSet2:Seek( ::oDbfDataSet1:Matricula)
>> :TextOut(100,400+n, ::oDbfDataSet1:Matricula)
>> :TextOut(275,400+n, substr(::oDbfDataSet1:Nombre,1,25))
>> :TextOut(875,400+n, ::oDbfDataSet1:telefono)
>> n := n+50
>> endif
>> ::oDbfDataSet1:skip()
>> enddo
>>
>> Alguien me podia hechar una mano para hacer esto con MySql.
>> No tengo ni idea.
>>
>> Gracias
>>
>> Paco V
>
>
Responder