Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problemas con consulta ADO (https://www.clubdelphi.com/foros/showthread.php?t=53435)

spyfenix 20-02-2008 20:49:13

Problemas con consulta ADO
 
Que tal gente
tengo un ADOQUERY en mi forma con el nombre qryPorNombre, el cual ya la tengo conectada ami BDD en Acces y funciona bien la conexion.
a ese ADOQuery en la propieda SQL agregue este consulta :

Código SQL [-]
SELECT nombres, apellido1, apellido2, sexo ,edad ,matricula , grupo, carrera,semestre, cumple, celular, telefono
  FROM  miembros
 WHERE nombres = :pNombre




ahora mi problema es el siguiente, con este codigo que tengo en un boton por buscar un cliente
me marca error cuando quiere abrir el AdoQuery y me muestra el sig. error:

"No se han especificado algunos valores para algunos parametros requeridos"


Código Delphi [-]
qryPorNombre.Parameters.ParamByName('pNombre').Value := TRIM(edtInfo.Text);
      aMatricula := qryPorNombrematricula.Value;
      if  aMatricula <> 0 Then //verifica si trae datos       begin         grdBusqueda.cells[0, grdBusqueda.RowCount -1] := qryPorNombrenombres.Values;
        grdBusqueda.cells[1, grdBusqueda.RowCount -1] := qryPorNombrecelular.AsString;
        grdBusqueda.cells[2, grdBusqueda.RowCount -1] := qryPorNombretelefono.AsString;
        grdBusqueda.cells[3, grdBusqueda.RowCount -1] := qryPorNombresemestre.AsString;
        grdBusqueda.cells[4, grdBusqueda.RowCount -1] := qryPorNombregrupo.AsString;
        grdBusqueda.cells[5, grdBusqueda.RowCount -1] := DateToStr(qryPorNombrecumple.Value);
        qryPorNombre.Next;
      end       qryPorNombre.Close;

Muchas gracias raza

saludos

jcarteagaf 21-02-2008 11:26:42

ADO Query
 
Te marca ese error porque la información del parametro no esta completa. Selecciona tu ADOQuery, selecciona la propiedad parameters y en el parametro fijate si tienes correctamente indicadas las propiedades: Tipo de dato (Datatype que debe ser:ftstring, ftInteger, etc), el tipo de Parametro (Paramtype: ptInput, ptInputOutput, etc.)

Aunque el Adoquery coloca esos valores automaticamente por ti, si tienes o tuviste algun error al escribir el query esos valores no son colocados correctamente.

Saludos

spyfenix 21-02-2008 13:54:08

Que tal jcarteagaf

cheque eso de los parametros y ya lo tengo cubierto, los puse de nuevo y lo corri, y el mismo error :S


gracias por la ayuda

que pódria ser ????

Delphius 21-02-2008 14:00:03

Hola spyfenix,
El codigo pareciera que está bien, pero he notado que no hay una llamada al Open.

¿Estás realizando el Open? Porque no lo veo en el código...
Supuestamente debería estar entre la asignación del parámetro y la lectura de los valores... Puede que por alli vengan los tiros.

Saludos,

eduarcol 21-02-2008 14:18:38

Lo mas seguro es que sea como dice Delphius, esta haciendo un open sin haber llenado el parametro. Cambia el open desde donde lo tienes a la linea despues que asignas el parametro.

spyfenix 21-02-2008 15:38:20

que tal

miren aqui les dejo mi codigo de como lo tengo actualmente y que me sigue marcando el mimso error


Código Delphi [-]
qryPorNombre.Parameters.ParamByName('pNombre').Value := TRIM(edtInfo.Text);
      qryPorNombre.Open;
      aMatricula := qryPorNombrematricula.Value;
      if  aMatricula <> 0 Then
      begin
        While Not qryPorNombre.Eof Do
        begin
          //grdBusqueda.cells[0, grdBusqueda.RowCount -1] := qryPorNombrenombres.Values;
          grdBusqueda.cells[1, grdBusqueda.RowCount -1] := qryPorNombrecelular.AsString;
          grdBusqueda.cells[2, grdBusqueda.RowCount -1] := qryPorNombretelefono.AsString;
          grdBusqueda.cells[3, grdBusqueda.RowCount -1] := qryPorNombresemestre.AsString;
          grdBusqueda.cells[4, grdBusqueda.RowCount -1] := qryPorNombregrupo.AsString;
          grdBusqueda.cells[5, grdBusqueda.RowCount -1] := DateToStr(qryPorNombrecumple.Value);
          qryPorNombre.Next;
        end;
      end

gracias, saludos

Delphius 21-02-2008 17:19:34

Hola spyfenix,
¿En qué línea se te produce el error?
Viendo ahora el código... creo que se debe a que no tienes definido el tipo de datos:

Código Delphi [-]
ADOquery1.Parameters.ParamByName('pNombre').DataType := ftString;

Fijate si es eso.
Si te sigue saliendo el error habría que fijarse bien si estás escribiendo bien la consulta, o si el nombre del parámetro coincide con el de la consulta.

Saludos,

spyfenix 21-02-2008 17:34:32

Que tal Delphius

mira modifique este codigo como dices de esta forma :


Código Delphi [-]
      qryPorNombre.Parameters.ParamByName('pNombre').DataType := ftString;
      qryPorNombre.Parameters.ParamByName('pNombre').Value    := TRIM(edtInfo.Text);
      qryPorNombre.Open;

y mi consulta la tengo de esta forma :


Código SQL [-]
SELECT nombres, apellido1, apellido2, sexo ,edad ,matricula , grupo, carrera,semestre, cumple, celular, telefono
  FROM  miembros
 WHERE nombres = :pNombre

el error se me presenta cuando quiero abrir el Qry me marca el error que ya sabes.

:S

que mas podria ser ??

muchas graias Delphius

Delphius 21-02-2008 18:04:22

spyfenix, pues la verdad es que me dejaste mal parado. No se a que podría deberse el error... ¿Podrías poner el error tal cual, en inglés? ¿O es que te lo arroja en español?

¿La SQL la tienes asignada en modo diseño? ¿O la ingresas por código?

Me gustaría ver todo el código completo, porque viendo lo que expones no soy capaz de saber la solución.

Saludos,

Caral 21-02-2008 18:25:27

Hola
Código Delphi [-]
qryPorNombre.Close; // por si se quiere repetir la consulta ya que hay un add
qryPorNombre.Sql.Text:= 'SELECT nombres, apellido1, apellido2, sexo ,edad ,matricula , grupo, carrera,semestre, cumple, celular, telefono';
qryPorNombre.Sql.Add('FROM  miembros  WHERE nombres = :Nombre');
qryPorNombre.Parameters.ParamByName('Nombre').Value := TRIM(edtInfo.Text);
qryPorNombre.Open;
      aMatricula := qryPorNombrematricula.Value; // esto tiene que estar en la casilla de verificacion
      if  aMatricula <> 0 Then
      begin
        While Not qryPorNombre.Eof Do
        begin
          //grdBusqueda.cells[0, grdBusqueda.RowCount -1] := qryPorNombrenombres.Values;
          grdBusqueda.cells[1, grdBusqueda.RowCount -1] := qryPorNombrecelular.AsString;
          grdBusqueda.cells[2, grdBusqueda.RowCount -1] := qryPorNombretelefono.AsString;
          grdBusqueda.cells[3, grdBusqueda.RowCount -1] := qryPorNombresemestre.AsString;
          grdBusqueda.cells[4, grdBusqueda.RowCount -1] := qryPorNombregrupo.AsString;
          grdBusqueda.cells[5, grdBusqueda.RowCount -1] := DateToStr(qryPorNombrecumple.Value);
          qryPorNombre.Next;
        end;
      end

o lo mismo sin parametros:

Código Delphi [-]
qryPorNombre.Close; // por si se quiere repetir la consulta ya que hay un add
qryPorNombre.Sql.Text:= 'SELECT nombres, apellido1, apellido2, sexo ,edad ,matricula , grupo, carrera,semestre, cumple, celular, telefono';
qryPorNombre.Sql.Add('FROM  miembros  WHERE nombres = '+ TRIM(edtInfo.Text));
qryPorNombre.Open;
      aMatricula := qryPorNombrematricula.Value; // esto tiene que estar en la casilla de verificacion
      if  aMatricula <> 0 Then
      begin
        While Not qryPorNombre.Eof Do
        begin
          //grdBusqueda.cells[0, grdBusqueda.RowCount -1] := qryPorNombrenombres.Values;
          grdBusqueda.cells[1, grdBusqueda.RowCount -1] := qryPorNombrecelular.AsString;
          grdBusqueda.cells[2, grdBusqueda.RowCount -1] := qryPorNombretelefono.AsString;
          grdBusqueda.cells[3, grdBusqueda.RowCount -1] := qryPorNombresemestre.AsString;
          grdBusqueda.cells[4, grdBusqueda.RowCount -1] := qryPorNombregrupo.AsString;
          grdBusqueda.cells[5, grdBusqueda.RowCount -1] := DateToStr(qryPorNombrecumple.Value);
          qryPorNombre.Next;
        end;
      end
Saludos

spyfenix 22-02-2008 19:53:17

Ya Funcionaaaa
 
Exelente, Muchas Gracias Caral
Ya Quedo Esto Resueltom Te Agradesco Mucho Por El Codigo..
Y Muchas Gracias A Todos Por Su Ayuda.

Saludos A Todos ...
Gracias


La franja horaria es GMT +2. Ahora son las 10:23:49.

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