Problema con un query con Ado

User avatar
jose_murugosa
Posts: 1182
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Problema con un query con Ado

Post by jose_murugosa »

Necesito ejecutar un query con harbour, fwh y mssqlserver con ADO.
Usando Heidisql, el query se ejecuta correctamente.
Cuando intento hacerlo con mi programa, el query aparece vacio.
No puedo darme cuenta que hago mal, si alguien pudiera ayudarme les agradezco.

Aca va el codigo que reproduce el error y una captura de heidisql ejecutando el que creo es el mismo script

Agradezco la ayuda que puedan brindarme, seguramente es algo que ignoro o un error, pero no puedo encontrarlo.

Gracias a todos desde ya.

Code: Select all | Expand

#include "Fivewin.ch"
#include "AdoDef.ch"

FUNCTION Santi1()
     LOCAL oCn2, cSql, oRs2
     
     wfecha:= Dtos( Ctod( '07/11/2024' ) )
     
     oCn2 := FW_OpenADOConnection( "MSSQL, 192.168.150.206, SarubbiAlba, sa, Came0300", .t. )
     
     cSql := "DECLARE @fecha char(8) = '" + wfecha + "' " + CRLF + ;
     "SELECT m1.tropanumero AS tropa, m1.correlativo, ani.descripcion, m1.inac AS INACUR, "  + CRLF + ;   
     "ROUND( t.kilosen1 / t.cabezas , 2) AS KEnPie, m1.kilos + isnull(m2.kilos,0) AS KClasif, m1.precioen2 "  + CRLF + ;
     "FROM C10304 m1 "  + CRLF + ;
     "INNER JOIN P0021 ani ON ani.codigo = m1.tipodeanimal " + CRLF + ;
     "INNER JOIN C10204 t ON t.ano = m1.tropaano AND t.numero = m1.tropanumero  " + CRLF + ;
     "OUTER APPLY ( SELECT * from C10304 m2 where m2.fecha = m1.fecha AND " + CRLF + ;
     "m2.lineadeproduccion = m1.lineadeproduccion AND m2.correlativo = m1.correlativo AND m2.mediares = 2 ) m2 " + CRLF + ;
     "WHERE m1.fecha = @fecha and m1.tipoderegistro = 4 and m1.mediares = 1 order by m1.correlativo ; "
     
     oRs2 := FW_OpenRecordSet( oCn2, cSql )

     xbrowse( oRs2 )
     
RETURN nil
 

Image
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
jacgsoft
Posts: 105
Joined: Fri Nov 24, 2006 9:03 pm
Location: Lima - Peru

Re: Problema con un query con Ado

Post by jacgsoft »

wfecha:=Dtos(Ctod('07/11/2024'))

Text Into cSql
SELECT m1.tropanumero AS tropa, m1.correlativo, ani.descripcion,
m1.inac AS INACUR,ROUND( t.kilosen1 / t.cabezas , 2) AS KEnPie,
m1.kilos + isnull(m2.kilos,0) AS KClasif, m1.precioen2
FROM C10304 m1
INNER JOIN P0021 ani ON ani.codigo = m1.tipodeanimal
INNER JOIN C10204 t ON t.ano = m1.tropaano AND t.numero = m1.tropanumero
OUTER APPLY ( SELECT * from C10304 m2 where m2.fecha = m1.fecha AND
m2.lineadeproduccion = m1.lineadeproduccion AND
m2.correlativo = m1.correlativo AND m2.mediares = 2 ) m2
WHERE m1.fecha = wfecha and m1.tipoderegistro = 4 and m1.mediares = 1
order by m1.correlativo
EndTtext

cSql:=StrTran(_Sql_,'wfecha',wfecha)
User avatar
jose_murugosa
Posts: 1182
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Problema con un query con Ado

Post by jose_murugosa »

Gracias por tu ayuda, jacgsoft
Lo probé pero obtuve el mismo resultado, un browse vacío.

Es extraño porque nunca había tenido problemas de este tipo, y no es el script porque funciona perfectamente al ejecutarlo en Heidisql.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
JoseAlvarez
Posts: 807
Joined: Sun Nov 09, 2014 5:01 pm

Re: Problema con un query con Ado

Post by JoseAlvarez »

jose_murugosa wrote:Gracias por tu ayuda, jacgsoft
Lo probé pero obtuve el mismo resultado, un browse vacío.

Es extraño porque nunca había tenido problemas de este tipo, y no es el script porque funciona perfectamente al ejecutarlo en Heidisql.
Trata con fecha "2024-11-07"

Algunas veces la consulta se ve bien en heidi o navicat, pero en nuestro PRG no funciona. Me ha pasado.

El manejo de fechas en sql tiene sus detalles, yo me hice una funcion donde toda fecha la lleva a un string con este formato "2024-11-07" asi es como lo entiende sql.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
jose_murugosa
Posts: 1182
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Problema con un query con Ado

Post by jose_murugosa »

JoseAlvarez wrote:
jose_murugosa wrote:Gracias por tu ayuda, jacgsoft
Lo probé pero obtuve el mismo resultado, un browse vacío.

Es extraño porque nunca había tenido problemas de este tipo, y no es el script porque funciona perfectamente al ejecutarlo en Heidisql.
Trata con fecha "2024-11-07"

Algunas veces la consulta se ve bien en heidi o navicat, pero en nuestro PRG no funciona. Me ha pasado.

El manejo de fechas en sql tiene sus detalles, yo me hice una funcion donde toda fecha la lleva a un string con este formato "2024-11-07" asi es como lo entiende sql.
Gracias tocayo querido, por siempre estar aportando y ayudando.
Lo probé, pero el resultado fué el mismo.

Lo curioso es que tengo hechos varios querys sobre estas tablas de la misma manera y sin problemas, y este es el que me vuelve loco :D
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
Armando
Posts: 3248
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Problema con un query con Ado

Post by Armando »

José:

A mi me parece que si el recordset se muestra vacío es porque alguna condición
no se cumple, sugiero revises por ahí.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
jose_murugosa
Posts: 1182
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Problema con un query con Ado

Post by jose_murugosa »

Armando wrote:José:

A mi me parece que si el recordset se muestra vacío es porque alguna condición
no se cumple, sugiero revises por ahí.

Saludos
Armando,
Gracias por responder.

Es lo que pensaba, pero si ves el primer mensaje, verás que el mismo query lo ingreso en Heidisql y se ejecuta perfectamente sin modificaciones.
También da lo mismo si la fecha se pone 20241109 o '20241109' con comillas simples.
Pero en el query no funciona siendo escrito exactamente igual.
Ni con, ni sin comillas simples en la fecha.

Nunca me había pasado, por lo general escribo mis querys en Heidi, porque puedo detectar cualquier error en los mismos y cuando estoy satisfecho del resultado los copio y pego en mi programación sin tener problemas, pero en este caso
no funcionó.

No dudo que quizá se me esté escapando la tortuga...... :)
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
Armando
Posts: 3248
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Problema con un query con Ado

Post by Armando »

José:

Con el único afán de apoyar, te muestro como lo hago yo con ADO y MySql,
ahí puedes ver la clausula BETWEEN

Code: Select all | Expand

   FW_ReOpenRecordSet(oRsExp,oApp:oCon,"SELECT " +;
                                          "*," +;
                                          "PRO_NOM," +;
                                          "CON_DES " +;
                                       "FROM " +;
                                          "HdrOdc " +;
                                       "LEFT JOIN " +;
                                          "Proveedores " +;
                                       "ON " +;
                                          "HDR_PRV = Proveedores.PRO_NUM " +;
                                       "LEFT JOIN " +;
                                          "Conceptos " +;
                                       "ON " +;
                                          "HDR_NI1 = Conceptos.CON_NI1 " +;
                                       "AND " +;
                                          "HDR_NI2 = Conceptos.CON_NI2 " +;
                                       "AND " +;
                                          "HDR_NI3 = Conceptos.CON_NI3 " +;
                                       "AND " +;
                                          "HDR_NI4 = Conceptos.CON_NI4 " +;
                                       "AND " +;
                                          "HDR_NI5 = Conceptos.CON_NI5 " +;
                                       "WHERE " +;
                                          "HDR_FDE BETWEEN " + DToS(dFecIni) + " AND " + DToS(dFecFin) + " " +;      <======== AQUI
                                       "ORDER BY " +;
                                          "HDR_ODC",adLockOptimistic,adOpenDynamic,0)
 
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
jose_murugosa
Posts: 1182
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Problema con un query con Ado

Post by jose_murugosa »

Muchas gracias Armando,
Voy a probar.
Hay huchas maneras de pasar un script, espero probando hallar cual es el problema con este que me trae al foro.
Toda ayuda sirve.

Muchas gracias por tu afán de colaborar, te aviso de los resultados.
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
ertan
Posts: 25
Joined: Wed Jul 26, 2023 12:08 pm
Location: Istanbul, Turkiye

Re: Problema con un query con Ado

Post by ertan »

Hi Everyone,

In my opinion,
You are supposed to finish your sql commands for mysql and maria database always adding with one more semicolon ";"

Please try this again.

Best regards,
Ertan
User avatar
JoseAlvarez
Posts: 807
Joined: Sun Nov 09, 2014 5:01 pm

Re: Problema con un query con Ado

Post by JoseAlvarez »

José, quizás con la consuta un poco más ordenada, lo podamos ver mejor

Code: Select all | Expand

cSql := "DECLARE @fecha char(8) = '" + wfecha + "' "            + CRLF 

cSql += "SELECT  "                                              + CRLF

cSql += "m1.tropanumero AS tropa, "                             + CRLF 
cSql += "m1.correlativo, "                                      + CRLF
cSql += "ani.descripcion, "                                     + CRLF
cSql += "m1.inac AS INACUR, "                                   + CRLF    
cSql += "ROUND( t.kilosen1 / t.cabezas , 2) AS KEnPie, "        + CRLF
cSql += "m1.kilos + isnull(m2.kilos,0)      AS KClasif, "       + CRLF 
cSql += "m1.precioen2 "                                         + CRLF

cSql += "FROM "                                                 + CRLF

cSql += "C10304 m1 "                                            + CRLF 

cSql += "INNER JOIN "                                           + CRLF  

cSql += "P0021 ani ON ani.codigo = m1.tipodeanimal "            + CRLF 

cSql += "INNER JOIN "                                           + CRLF 

cSql += "C10204 t  ON t.ano = m1.tropaano AND "                 + CRLF
cSql += "t.numero = m1.tropanumero "                            + CRLF 
cSql += "OUTER APPLY ( SELECT * from C10304 m2 "                + CRLF 

cSql += "WHERE "                                                + CRLF 

cSql += "m2.fecha = m1.fecha AND "                              + CRLF
cSql += "m2.lineadeproduccion = m1.lineadeproduccion AND "      + CRLF
cSql += "m2.correlativo = m1.correlativo AND "                  + CRLF
cSql += "m2.mediares = 2 ) m2 "                                 + CRLF 

cSql += "WHERE "                                                + CRLF 

cSql += "m1.fecha = @fecha and m1.tipoderegistro = 4 AND "      + CRLF
cSql += "m1.mediares = 1 "                                      + CRLF
cSql += "ORDER BY m1.correlativo ; "
Prueba dos cosas a ver:
1. coloca en esta linea un ";" al final

Code: Select all | Expand

cSql := "DECLARE @fecha char(8) = '" + wfecha+"' ;" + CRLF
2.- Si no resulta, prueba haciendo la primera linea como un query independiente

Code: Select all | Expand

cSql := "DECLARE @fecha char(8) = '" + wfecha+"' "
y luego otro query con el resto de la consulta.
Last edited by JoseAlvarez on Thu Nov 14, 2024 8:15 pm, edited 2 times in total.
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
jose_murugosa
Posts: 1182
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Problema con un query con Ado

Post by jose_murugosa »

Muchas gracias por vuestros aportes.
Finalmente creo que di con el problema, se trataba de un malvado espacio que faltaba al copiar y pegar.
De todos modos vuestras sugerencias han sido muy enriquecedoras y de hecho, he aprendido formas mucho más eficientes de escribir mis querys.

Agradezco infinitamente buestra bondad y paciencia y aprovecho para desearles lo mejor para estas fiestas tradicionales que ya están en la puerta....

Un fuerte abrazo
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
User avatar
sysctrl2
Posts: 1035
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: Problema con un query con Ado

Post by sysctrl2 »

yo apenas iba sugerir que consultaras con un ingeniero en sistemas :D :lol:
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
JoseAlvarez
Posts: 807
Joined: Sun Nov 09, 2014 5:01 pm

Re: Problema con un query con Ado

Post by JoseAlvarez »

jose_murugosa wrote:Muchas gracias por vuestros aportes.
Finalmente creo que di con el problema, se trataba de un malvado espacio que faltaba al copiar y pegar.
De todos modos vuestras sugerencias han sido muy enriquecedoras y de hecho, he aprendido formas mucho más eficientes de escribir mis querys.

Agradezco infinitamente buestra bondad y paciencia y aprovecho para desearles lo mejor para estas fiestas tradicionales que ya están en la puerta....

Un fuerte abrazo
Que bien !! me contenta que hayas resuelto.

¡ Eso es lo divertido de programar ! :lol: :lol:
"Los errores en programación, siempre están entre la silla y el teclado..."

Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin

Carora, Estado Lara, Venezuela.
User avatar
jose_murugosa
Posts: 1182
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Re: Problema con un query con Ado

Post by jose_murugosa »

sysctrl2 wrote:yo apenas iba sugerir que consultaras con un ingeniero en sistemas :D :lol:
Tienes razón, como se dice vulgarmente..... "se me escapó la tortuga" :lol:
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
Post Reply