nuevo con mysql
-
- Novato
- Mensajes: 34
- Registrado: Jue Mar 10, 2011 12:22 am
- Contactar:
nuevo con mysql
Buen dia a todos:
Estamos haciendo pruebas con nuestro sistema para migrarlo de tps a mysql todo bien migramos informacion pero llegamos a este problema, en un open de una ventana con tps realizabamos el siguiente codigo:
recorremos todas la fracciones de un modelo recorriendo con set(key,key), no hemos modificado a sentencias y en mysql no hace el recorrido normal no se posiciona el modelo, nunca lo encuentra. Las sentencias del fetch() si funcionan correctamente, mi duda es que debo cambiar para que funcione en mysql, conforme recorro la tabla voy guardando en una queue.
clear(IngMoFr:Record)
ING2:Modelo = ModeloL
set(ING2:SKModelo,ING2:SKModelo)
Loop until access:IngMoFr.next() or ING2:Modelo <> ModeloL
clear(IngFrac:Record)
ING:Fraccion = ING2:Fraccion
if access:IngFrac.fetch(ING:PKFrac) = level:benign
if ING:Hecha = 'PESPUNTADOR'
Loc:TE += ING2:TEstandar
elsif ING:Hecha = 'PRELIMINAR'
Loc:TETP += ING2:TEstandar
end
end
clear(Priv:TE) ! guardamos Modelo con tiempos estandar en QUEUE
ModeloT = ModeloL
TET = Loc:TE
TETPre = Loc:TETP
add(Priv:TE)
end
De antemano Gracias.....
atte. Hugo Briseño
Estamos haciendo pruebas con nuestro sistema para migrarlo de tps a mysql todo bien migramos informacion pero llegamos a este problema, en un open de una ventana con tps realizabamos el siguiente codigo:
recorremos todas la fracciones de un modelo recorriendo con set(key,key), no hemos modificado a sentencias y en mysql no hace el recorrido normal no se posiciona el modelo, nunca lo encuentra. Las sentencias del fetch() si funcionan correctamente, mi duda es que debo cambiar para que funcione en mysql, conforme recorro la tabla voy guardando en una queue.
clear(IngMoFr:Record)
ING2:Modelo = ModeloL
set(ING2:SKModelo,ING2:SKModelo)
Loop until access:IngMoFr.next() or ING2:Modelo <> ModeloL
clear(IngFrac:Record)
ING:Fraccion = ING2:Fraccion
if access:IngFrac.fetch(ING:PKFrac) = level:benign
if ING:Hecha = 'PESPUNTADOR'
Loc:TE += ING2:TEstandar
elsif ING:Hecha = 'PRELIMINAR'
Loc:TETP += ING2:TEstandar
end
end
clear(Priv:TE) ! guardamos Modelo con tiempos estandar en QUEUE
ModeloT = ModeloL
TET = Loc:TE
TETPre = Loc:TETP
add(Priv:TE)
end
De antemano Gracias.....
atte. Hugo Briseño
- Mauricio
- Desarrollador de Clarion
- Mensajes: 1125
- Registrado: Dom Feb 06, 2011 9:34 am
- Ubicación: España
- Contactar:
Re: nuevo con mysql
Te recomiendo que cambies ese código por un query, usando Prop:SQL y una tabla estúpida o boba. Va a ser mucho más eficiente, seguro.
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog
www.tdcsoftware.com y www.clarioneros.com/blog
-
- Novato
- Mensajes: 34
- Registrado: Jue Mar 10, 2011 12:22 am
- Contactar:
Re: nuevo con mysql
Buen dia:
Mauricio gracias por contestar, podrías ponerme un ejemplo de como seria la instrucción que utilizaría?, y mas o menos como funcionaria?
Mauricio gracias por contestar, podrías ponerme un ejemplo de como seria la instrucción que utilizaría?, y mas o menos como funcionaria?
- Mauricio
- Desarrollador de Clarion
- Mensajes: 1125
- Registrado: Dom Feb 06, 2011 9:34 am
- Ubicación: España
- Contactar:
Re: nuevo con mysql
Necesitaría saber al menos las estructuras de las tablas y su relación. Por el código, el query sería algo así:
SELECT * FROM IngMoFr, IngFrac
WHERE IngMoFr.Fraccion = IngFrac.Fraccion
AND IngMoFr.Modelo = ModeloLa
En lugar de * solo deberías traer los campos que vas a usar, para evitar tráfico innecesario.
Luego eso lo metés en una variable, Loc:Query llamémosla, y hacés:
El sistema va a ser mucho más rápido y eficiente.
SELECT * FROM IngMoFr, IngFrac
WHERE IngMoFr.Fraccion = IngFrac.Fraccion
AND IngMoFr.Modelo = ModeloLa
En lugar de * solo deberías traer los campos que vas a usar, para evitar tráfico innecesario.
Luego eso lo metés en una variable, Loc:Query llamémosla, y hacés:
Código: Seleccionar todo
SQL_File{Prop:SQL} = Loc:Query
LOOP
NEXT(SQL_File)
IF ErrorCode()
BREAK
END !IF
!Acumulás variables y agregás a la queue
END !LOOP
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog
www.tdcsoftware.com y www.clarioneros.com/blog
-
- Novato
- Mensajes: 47
- Registrado: Mar Mar 08, 2011 6:09 pm
- Contactar:
Re: nuevo con mysql
oyes esto esta muy interesante... pues tengo el mismito problema, hasta parece que trabajamos donde mismo jajaja, pero disculpa mauricio como se define la tabla tonta que comentas???
de antemano gracias...
de antemano gracias...
-
- Novato
- Mensajes: 47
- Registrado: Mar Mar 08, 2011 6:09 pm
- Contactar:
Re: nuevo con mysql
bueno supongo que eso es lo que haces en esta instruccion
SQL_File{Prop:SQL} = Loc:Query
o que es SQL_File
SQL_File{Prop:SQL} = Loc:Query
o que es SQL_File
- Mauricio
- Desarrollador de Clarion
- Mensajes: 1125
- Registrado: Dom Feb 06, 2011 9:34 am
- Ubicación: España
- Contactar:
Re: nuevo con mysql
En alguno de los post sobre SQL que escribí creo que la definí. Se define como otra tabla normal solo que tendrá x cantidad de campos que serán todos del mismo tipo, CSTRING. Los campos se llaman C1, C2, C3, etc., todos los que quieras tener. La longitud del CSTRING depende de tu sistema pero generalmente con 1001 caracteres alcanza, aunque si tenés un CSTRING más grande en alguna de las tablas y lo pensás usar en una consulta te conviene usar esa longitud.
Esta tabla actúa como un buffer y es importante recordar que JAMAS harás un ADD o Insert en la misma. Físicamente está SIEMPRE vacía.
Una vez ejecutado el query en esa tabla luego se recorre con un LOOP como puse en el post anterior.
El link sobre la tabla estúpida es este: viewtopic.php?f=6&t=437&p=1939&hilit=ta ... pida#p1939
Esta tabla actúa como un buffer y es importante recordar que JAMAS harás un ADD o Insert en la misma. Físicamente está SIEMPRE vacía.
Una vez ejecutado el query en esa tabla luego se recorre con un LOOP como puse en el post anterior.
El link sobre la tabla estúpida es este: viewtopic.php?f=6&t=437&p=1939&hilit=ta ... pida#p1939
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog
www.tdcsoftware.com y www.clarioneros.com/blog
-
- Novato
- Mensajes: 47
- Registrado: Mar Mar 08, 2011 6:09 pm
- Contactar:
Re: nuevo con mysql
Hola denuevo mauricio, si ya me habia leido tu aporte sobre esa tabla y la vdd te lo agradezco pues ta muy interesante y bastante entendible, incluso ya hice un ejemplo en SQL Express y funciona de lo mejor, pero mi pregunta es como definirla en el Diccionario si utilizo MySQL, mira la he definido asi ...
y no marca error, pero igual no me devuelve nada en la consulta...
De antemano gracias
y no marca error, pero igual no me devuelve nada en la consulta...
De antemano gracias
-
- Novato
- Mensajes: 47
- Registrado: Mar Mar 08, 2011 6:09 pm
- Contactar:
Re: nuevo con mysql
Bueno nomas nunca aparecio la imagen ... pero la tengo definida asi...
Usage : Table
Name : SQL_File
Description : Tabla temporal
Prefix : RES
Database Driver : ODBC
Driver Opctions : /TURBOSQL=TRUE
Owner Name : !glo:owner
Full PathName : ss_MiTabla
Demas opciones habilitadas
Enable Table Creation
Open in Current Thread
Asi la tengo definida...
Usage : Table
Name : SQL_File
Description : Tabla temporal
Prefix : RES
Database Driver : ODBC
Driver Opctions : /TURBOSQL=TRUE
Owner Name : !glo:owner
Full PathName : ss_MiTabla
Demas opciones habilitadas
Enable Table Creation
Open in Current Thread
Asi la tengo definida...
- Mauricio
- Desarrollador de Clarion
- Mensajes: 1125
- Registrado: Dom Feb 06, 2011 9:34 am
- Ubicación: España
- Contactar:
Re: nuevo con mysql
No se ve
Mauricio, básicamente usando Clarion 6.3
www.tdcsoftware.com y www.clarioneros.com/blog
www.tdcsoftware.com y www.clarioneros.com/blog
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 17 invitados