Problema con un query con Ado

Problema con un query con Ado

Postby jose_murugosa » Mon Nov 11, 2024 4:49 pm

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 view

#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
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Problema con un query con Ado

Postby jacgsoft » Mon Nov 11, 2024 8:55 pm

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
jacgsoft
 
Posts: 105
Joined: Fri Nov 24, 2006 9:03 pm
Location: Lima - Peru

Re: Problema con un query con Ado

Postby jose_murugosa » Tue Nov 12, 2024 10:21 am

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
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Problema con un query con Ado

Postby JoseAlvarez » Tue Nov 12, 2024 11:10 am

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
JoseAlvarez
 
Posts: 795
Joined: Sun Nov 09, 2014 5:01 pm

Re: Problema con un query con Ado

Postby jose_murugosa » Tue Nov 12, 2024 12:09 pm

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
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Problema con un query con Ado

Postby Armando » Tue Nov 12, 2024 5:38 pm

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
Armando
 
Posts: 3228
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Problema con un query con Ado

Postby jose_murugosa » Tue Nov 12, 2024 6:07 pm

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
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Problema con un query con Ado

Postby Armando » Tue Nov 12, 2024 6:19 pm

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 view

   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
Armando
 
Posts: 3228
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Problema con un query con Ado

Postby jose_murugosa » Wed Nov 13, 2024 10:41 am

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
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Problema con un query con Ado

Postby ertan » Wed Nov 13, 2024 1:29 pm

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
ertan
 
Posts: 25
Joined: Wed Jul 26, 2023 12:08 pm
Location: Istanbul, Turkiye

Re: Problema con un query con Ado

Postby JoseAlvarez » Wed Nov 13, 2024 2:56 pm

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


Code: Select all  Expand view
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 view
cSql := "DECLARE @fecha char(8) = '" + wfecha+"' ;" + CRLF


2.- Si no resulta, prueba haciendo la primera linea como un query independiente
Code: Select all  Expand view
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
JoseAlvarez
 
Posts: 795
Joined: Sun Nov 09, 2014 5:01 pm

Re: Problema con un query con Ado

Postby jose_murugosa » Thu Nov 14, 2024 3:51 pm

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
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Re: Problema con un query con Ado

Postby sysctrl2 » Thu Nov 14, 2024 4:00 pm

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
sysctrl2
 
Posts: 1020
Joined: Mon Feb 05, 2007 7:15 pm

Re: Problema con un query con Ado

Postby JoseAlvarez » Thu Nov 14, 2024 4:27 pm

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
JoseAlvarez
 
Posts: 795
Joined: Sun Nov 09, 2014 5:01 pm

Re: Problema con un query con Ado

Postby jose_murugosa » Fri Nov 15, 2024 1:20 pm

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!!"
User avatar
jose_murugosa
 
Posts: 1180
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Enrico Maria Giordano and 42 guests