Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-01-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Tal y como respondi en DelphiAccess:

El componente internamente interpreta la sentencia SQL y crea automaticamente los parametros; no hace falta que invoques para nada al metodo Parameters.AddParameter

Osea por ejemplo, con un SQL asi:

Código Delphi [-]
  ADOQuery.SQL.Add(...)
  ADOQuery.SQL.Add(' WHERE Campo = :Param ');
  ADOQuery.Parameters.ParamByName('Param') --> devuelve el TParameter correspondiente

Se crea automaticamente un objeto TParameter con nombre o "identificador" 'Param'.

Si por algun motivo te interesa desactivar esto ultimo y encargarte vos mismo de crear los parametros, debes setear la propiedad ParamCheck a False

El problema son los parametros pero por ambiguedad; internamente la coleccion TParameters del TADOQuery va a tener dos parametros llamados igual y uno va a quedar sin un valor definido y por eso tiene conflicto de datos

Prueba de concepto (necesario que el ADOQuery tenga su propiedad Connection seteada a una conexion "valida")

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  Param: TParameter;
begin
  ADOQuery1.SQL.Text := ' SELECT * FROM Clientes WHERE Nombre = :Nombre ';
  Param := ADOQuery1.Parameters.AddParameter;
  Param.Name := 'Nombre';
  Param.DataType := TFieldType.ftInteger;
  ShowMessage(ADOQuery1.Parameters.Count.ToString); // imprime 2
  if ADOQuery1.Parameters.ParamByName('Nombre') <> Param then // evalua true
    ShowMessage('son distintos objetos');
end;
Responder Con Cita
  #2  
Antiguo 01-02-2017
koalasoft koalasoft is offline
Miembro
 
Registrado: oct 2004
Ubicación: Tenosique Tabasco
Posts: 86
Poder: 20
koalasoft Va por buen camino
Bueno no se si sea la forma mas elegante o teng consecuencia a futuro .. pero al menos de esta forma me funcionó..

Puse los valores en una variable ..

Código PHP:
Var   B,F,S,P,integer;
..
.
.
// Variables
B:= StrToInt(Edit1.Text);
F:= StrToInt(Edit2.Text);
S:= StrToInt(Edit3.Text);
P:= StrToInt(Edit4.Text);
O:= StrToInt(Edit5.Text); 
De alli aplique la consulta siguiente ...

Código PHP:
Close;
   
SQL.Clear;
   
SQL.Add('SELECT * FROM CTRLONT CTRL ');
   
SQL.Add('join CLIENTES CL on CTRL.FOLIO = CL.FOLIO ');
   
SQL.Add('join ONTs ONT on CTRL.FOLIO = ONT.Folio ');
   
SQL.Add('WHERE CTRL.BOARD_ONT = 'IntToStr(B));
   
SQL.Add(' AND CTRL.FRAME_ID = 'IntToStr(F));
   
SQL.Add(' AND CTRL.SLOT_ID = 'IntToStr(S));
   
SQL.Add(' AND CTRL.PORT_ID = '+  IntToStr(P));
   
SQL.Add(' AND CTRL.ONT_ID = '+  IntToStr(O));
   
Open
Y ahora si no me envió NINGUN mensaje de error y me ejecuto la búsqueda al menos como lo hacía antes.
Responder Con Cita
  #3  
Antiguo 01-02-2017
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
No es la forma adecuada, puedes llegar a tener problemas con los tipos de datos o cadenas con comilla simple, lo ideal es usar los params ya que con ellos te evitas esos temas.

Revisando lo que comenta Agustin es correcto, al agregar a la setencia ":valor" el parametro es creado automaticamente, revisa si el prefijo de params esta como caracter ":" , en algunso caso viene como "@" (en algun componente lo llegue a ver) y la otra es el params check que se encuentr en false, por ultimo te recomendaria (si tu sentencia es fija y siempre usa los mismos parametros) setearla desde diseño y ahi podras ver si se crean los parametros y asignarle valores en diseño para pruebas.

Saludos.
__________________
¡Ni como ayudarte Niño!!
bitbow
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
conflicto entre aplicaciones zajoma Tablas planas 3 27-05-2008 17:48:58
Conflicto entre puertos jsanchez API de Windows 2 07-09-2007 00:37:17
Conflicto entre nospE y eagS marcoszorrilla La Taberna 3 09-01-2007 18:34:23
Query entre dos tablas de distintas databases tefots Firebird e Interbase 2 06-11-2006 15:28:29
Conflicto entre Query y Tabla filtrada Michael Varios 2 20-05-2004 21:37:43


La franja horaria es GMT +2. Ahora son las 16:41:19.


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