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