Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-06-2006
Markoz Markoz is offline
Miembro
 
Registrado: jun 2003
Ubicación: Los Mochis, Sinaloa, Mexico
Posts: 28
Poder: 0
Markoz Va por buen camino
Arrow ayuda con ADOQuery

Tengo el siguiente codigo

Código Delphi [-]
  if (key = #13) then
    begin
      With dm.QBusArticulo do
        begin
          Close;
          SQL.Clear;

          if rgBusArticulo.ItemIndex = 1 then
            begin
             
              SQL.Text := 'Select * from tb_Articulos where idArtEan =' + frmBusArticulo.edtBusArticulos.Text;
            end
          else
            begin
              SQL.Text := 'Select * from tb_Articulos where Nombre =' + frmBusArticulo.edtBusArticulos.Text ;
            end;
         Open;
        end;
    end;

trato de utilizar ADOQuery por que solo quiero realizar consultas a una base de datos la cual no puedo modificar para agregarle Procedimientos Almacenados.

Al correrlo con MSSQL me dice que el nombre de la columna no existe, y dicho nombre es lo que envio en el parametro frmBusArticulo.edtBusArticulos.Text ;

si alguien tiene algun ejemplo de uso de ADOQuery para consultas SQL se lo agradeceria
__________________
In Code I Trust
www.geekmx.com
http://markitoz/blogspot.com
Responder Con Cita
  #2  
Antiguo 10-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Con tu permiso modifico el código, creo que falta QuotedStr para encerrar el valor de buscarArticulo.text entre comillas simples. ¿O será que en access son comillas dobles ¿?

Código Delphi [-]
const sqlArticulos = 'Select * from tb_Articulos where %s = %s'
 if (key = #13) then
    begin
      With dm.QBusArticulo do
        begin
          Close;
//          SQL.Clear; En realidad no hace falta, ya que al establecer la propiedad Text
//                        Se hace un Clear internamente.

          if rgBusArticulo.ItemIndex = 1 then
              SQL.Text := Format(sqlArticulos, ['idArtEan',
                                                  QuotedStr(frmBusArticulo.edtBusArticulos.Text)])
          else
              SQL.Text := Format(sqlArticulos, ['Nombre',
                                                  QuotedStr(frmBusArticulo.edtBusArticulos.Text)]);

         Open;
        end;
    end;

En este caso, estoy suponiendo que idArtEan y Nombre son campos de tipo carácter (string, varchar, etc). Si idArtEan es un campo de tipo entero, no hace falta el QuotedStr.

Si QuotedStr no te funciona, prueba a encerrarlo con comillas dobles.

Si no es mucha molestia me gustaría que comentaras la solución (si se resuelve... claro )

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 10-06-2006
Markoz Markoz is offline
Miembro
 
Registrado: jun 2003
Ubicación: Los Mochis, Sinaloa, Mexico
Posts: 28
Poder: 0
Markoz Va por buen camino
Talking

Muchas gracias Lepe, sirvio bien, saludos.
__________________
In Code I Trust
www.geekmx.com
http://markitoz/blogspot.com
Responder Con Cita
  #4  
Antiguo 10-06-2006
Markoz Markoz is offline
Miembro
 
Registrado: jun 2003
Ubicación: Los Mochis, Sinaloa, Mexico
Posts: 28
Poder: 0
Markoz Va por buen camino
Unhappy

Trate de utilizar el mismo codigo para otra consulta donde manejo fechas

Código Delphi [-]
      f1 := DateTimeToStr(dFechaInicio.date) ;
      f2 := DateTimeToStr(dFechaFinal.date) ;
      With dm.QBusKardex do
        begin
          Close;
          SQL.Clear;

          sqlKardex:= 'Select * from tb_Kardex where %s = %s AND FechaTransaccion BETWEEN %s AND %s';
          //SQL.Text := 'Select * from tb_Articulos where Nombre =' + frmBusArticulo.edtBusArticulos.Text ;

          SQL.Text := Format(sqlKardex,
                          ['idArtEan',
                          QuotedStr(ResArticulo),
                          QuotedStr(f1),
                          QuotedStr(f2)]);
          Open;
      

       end;


y me regresa el siguiente error "sintax error converting character string to smalldatetime type"
__________________
In Code I Trust
www.geekmx.com
http://markitoz/blogspot.com
Responder Con Cita
  #5  
Antiguo 11-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Las fechas son algo especiales, porque se pueden pasr en varios formatos :
dd/mm/yyyy
mm/dd/yyyy
yyyy/mm/dd

Es mejor que Delphi sea el que busque el formato adecuado para este tipo de datos, así que usamos parámetros:
Código Delphi [-]
      With dm.QBusKardex do
        begin
          Close;
          SQL.Clear;

          sqlKardex:= 'Select * from tb_Kardex where %s = %s AND FechaTransaccion BETWEEN : prFechaInicio AND : prFechaFin';
          SQL.Text := Format(sqlKardex,
                          ['idArtEan',
                          QuotedStr(ResArticulo)]);
    // hemos usado la técnica anterior para establecer parte del SQL, 
   // ahora usamos la otra técnica:
     Parambyname('prFechaInicio').AsDatetime := dtFechaInicio.Date;
     Parambyname('prFechaFin').AsDatetime := dtFechaFinal.Date;
          Open;

En este caso queda algo engorrosa la consulta, pero el nombre de un campo (IdArtEan) no puede pasarse por parámetros. el uso de parámetros en una consulta simple sería:

Código Delphi [-]
   query1.sql.text := ' SELECT * FROM TABLA WHERE Codigo = : prCodigo AND FECHA BETWEEN  : pr1 AND : pr2' ;
  query1.Parambyname('pr1').AsDateTime := now;
  query1.Parambyname('pr2').AsDateTime := now + 4;
  query1.Parambyname('prCodigo').AsInteger := 23;
  query1.Open;
Como ves, a todos los parámetros de la consulta le pongo el prefijo "pr" delante, más que nada por claridad para mí. Simplemente con anteponer los dos puntos ":" a cualquier nombre, ya delphi lo interpreta como un parámetro.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
consulta con un adoQuery manu Conexión con bases de datos 4 29-09-2006 00:17:48
concatenar en un adoquery crack_neon Conexión con bases de datos 2 04-05-2006 21:57:24
ADOStoredProc vs ADoQuery lgarcia Debates 0 11-04-2006 22:06:07
ayuda con adoquery buffygcs SQL 6 18-04-2005 13:45:16
AdoQuery davidgaldo Conexión con bases de datos 1 05-02-2004 20:07:29


La franja horaria es GMT +2. Ahora son las 19:31:14.


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