Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 03-07-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Pues por lo que he probado no me funciona. No me reconoce la variable @fila en la segunda consulta:

Código:
AdoQuery1.SQL.Add('set @fila = 0');
AdoQuery1.ExecSQL;

AdoQuery1.sql.clear;
AdoQuery1.SQL.Add('select @fila:= @fila + 1 as fila, Cod_Factura, 
Importe_Total from facturas');
AdoQuery1.Open;
Tengo un TAdoConnection con el siguiente conectionstring:

Código:
Provider=MSDASQL.1;Persist Security Info=False;Data Source=ANDC;
Extended Properties="DATABASE=andc;DESCRIPTION=Analitica DC;DSN=ANDC;
OPTION=0;PORT=0;SERVER=intranetdes;UID=andc"
El Adoquery1 utiliza dicha conexión.

La versión de MySql es 5.0.19.nt y el Driver ODBC es MyODBC Driver 3.51.
Es como si cada ejecución de consulta la tratara como una sesión distinta con lo que no reconoce la variable ya creada. Alguna idea????

Saludos, Tony
Responder Con Cita
  #22  
Antiguo 03-07-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola Tony,

Acabo de probar y me marca este error:

Cita:
Objeto Parameter mal definido. Se proporcionó información incompleta o incoherente.
Al parecer los dos puntos los confunde con un parámetro (y ahora me pregunto ¿cómo es que a ZEOS no le pasalo mismo?).

Afortunadamente he podido solucionarlo diciéndole que haga caso omiso del "parámetro":

Código Delphi [-]
AdoQuery1.SQL.Text := 'set @fila = 0';
AdoQuery1.ExecSQL;

ADOQuery1.ParamCheck := false; // <-- añadir esto

AdoQuery1.SQL.Text :=
  'select @fila := @fila + 1 as fila, clave, nombre from solicitante';
AdoQuery1.Open;

aunque me queda la duda de qué hacer en caso de que realmente tengamos algún parámetro en la consulta.

La cadena de conexión que usé:

Cita:
DRIVER={MySQL ODBC 3.51 Driver};SERVER=server;DATABASE=database;USER=user;PASSWORD=password;OPTION=3
y también con el driver 5.1.

// Saludos
Responder Con Cita
  #23  
Antiguo 03-07-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Pues es verdad ahora como meteríamos un parámetro
La cuestión es que a mi no me daba tu error :
Cita:
Objeto Parameter mal definido. Se proporcionó información incompleta o incoherente.
Me daba directamente el del ODBC:

Cita:
[MySQL][ODBC 3.51 Driver]You have an error in your SQL syntax near bla bla bla
Por eso creía que el error venía de Mysql.... debería de haber alguna forma de introducir parametros asi como cuando utilizamos las dos comillas para una comilla, o como el quotedstr

Saludos, Tony

P.D. Con lo que has dicho me funciona correctamente.
Responder Con Cita
  #24  
Antiguo 03-07-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por tcp_ip_es
como cuando utilizamos las dos comillas para una comilla
¡Eureka!

Me ha funcionado poniendo dos ::

Código Delphi [-]
AdoQuery1.SQL.Text := 'set @fila = 0';
AdoQuery1.ExecSQL;

AdoQuery1.SQL.Text :=
  'select @fila ::= @fila + 1 as fila, clave, nombre from solicitante where tipo_id = :tipoId';

AdoQuery1.Parameters.ParamByName('tipoId').DataType := ftInteger;
AdoQuery1.Parameters.ParamByName('tipoId').Value := 4;

AdoQuery1.Open;

// Saludos
Responder Con Cita
  #25  
Antiguo 03-07-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Sabía que tenía que haber algo asi....
Responder Con Cita
  #26  
Antiguo 05-07-2008
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 23
lucasarts_18 Va por buen camino
Hola.

Disculpen por haber abandonado este hilo, recien he tenido un tiempo para retomar esto, gracias enecumene y Román, funciona perfecto, no conocía esto de los SET en mysql, solo en MS-SQL Server , por eso mi equivocación inicial.

Mil Gracias, hasta la próxima.

Bye.
__________________
No todo es como parece ser...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enumerar las Pc's en una LAN Saindoft Redes 1 02-06-2008 22:48:24
Enumerar usuarios conectados a tu pc fide API de Windows 4 21-01-2007 17:08:50
Como Validar Filas en Select? AGAG4 SQL 9 30-12-2005 20:05:19
Como enumerar filas de un DBGrid sin agregar otro campo Velia Varios 2 06-12-2005 08:58:57
Enumerar con Letras torito Varios 4 20-07-2005 14:57:23


La franja horaria es GMT +2. Ahora son las 00:48:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi