Página 1 de 1

Peleando

Publicado: Vie May 11, 2007 8:54 am
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

Peleando

Publicado: Vie May 11, 2007 9:00 am
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

Peleando

Publicado: Vie May 11, 2007 10:36 am
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

Peleando

Publicado: Vie May 11, 2007 11:25 am
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
>
>