Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-08-2005
perillan perillan is offline
Miembro
 
Registrado: feb 2005
Posts: 82
Poder: 22
perillan Va por buen camino
Sí, pero como se haria la consulta?.

IBQuery1.Params...........................
Responder Con Cita
  #2  
Antiguo 18-08-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 22
jmariano Va por buen camino
Si no estoy interpretandote mal, para poder hacer una consulta sobre cualquier campo tendrás que reconstruir la cláusula "WHERE" cada vez que quieras buscar por otro campo (ya que no se pueden usar parámetros para especificar campos). Lo mejor sería dividir la consulta en varias líneas para así sólo modificar la parte dinámica a través de su índice. Por ejemplo, imaginando que la cláusula "WHERE" estuviera en la segunda línea de la propiedad "SQL" (teniedo en la primera la parte "select...from..."):

Código Delphi [-]
  IBQuery1.SQL[1] := 'WHERE ' + ComboBox.Items[ComboBox.ItemIndex] + ' = :valor1';
  ...
Responder Con Cita
  #3  
Antiguo 21-08-2005
perillan perillan is offline
Miembro
 
Registrado: feb 2005
Posts: 82
Poder: 22
perillan Va por buen camino
De esta manera no me dá ningún resultado, que error puede tener el codigo.?:

procedure TPaneldeInformes.BitBtn7Click(Sender: TObject);
var
valor:string;
begin
valor:='TRASMISIONES'; //Resultado a buscar en el campo seleccionado en el combobox1.
IBQuery1.Active := False;
IBQuery1.SQL[1] := 'WHERE ' + ComboBox1.Items[ComboBox1.ItemIndex] + ' = :valor';

IBQuery1.Active := True;

Última edición por perillan fecha: 21-08-2005 a las 14:00:27.
Responder Con Cita
  #4  
Antiguo 21-08-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 22
jmariano Va por buen camino
Lo que tienes mal es que primero has de definir la cláusula "WHERE" y después el valor para el parámetro dinámico. También tienes mal la forma de pasar el valor.

La forma correcta sería así

Código Delphi [-]
procedure TPaneldeInformes.BitBtn7Click(Sender: TObject);
begin
  IBQuery1.Active := False;
  IBQuery1.SQL[1] := 'WHERE ' + ComboBox1.Items[ComboBox1.ItemIndex] + ' = :valor';
  IBQuery1.Params[0].AsString := 'TRASMISIONES'; //Resultado a buscar en el campo seleccionado en el combobox1.
  IBQuery1.Active := True;
end;
Responder Con Cita
  #5  
Antiguo 21-08-2005
perillan perillan is offline
Miembro
 
Registrado: feb 2005
Posts: 82
Poder: 22
perillan Va por buen camino
Sigue sin darme ningún resultado ni tampoco error.

Supongo que problema puede ser en el codigo de propiedades del IBQuery, lo tengo así:

Select *from articulos

Si no hay un campo fijo para la busqueda con el WHERE que en el ejemplo seria el Combobox1, como le puedo asignar el parametro tambien del ejemplo ('=:valor). ?
Responder Con Cita
  #6  
Antiguo 21-08-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 22
jmariano Va por buen camino
Si no te da resultados, es decir, no te devuelve ningun registro es que, entonces, no debe de haber ningun registro donde el campo especificado en el "Combo" tenga el valor "TRASMISIONES". Fíjate si la cadena está escrita correctamente y si la almacenaste así todo en mayúsculas en la tabla.

Por cierto, la cláusula "SELECT" la tienes correcta pero si sólo tienes esa línea me resulta raro que no te haya dado error de índice al acceder al segundo elemento de la propiedad SQL del IBQuery (donde estaría la cláusula "WHERE"), salvo, claro, que tengas una línea en blanco debajo del "SELECT".

Sobre tu última pregunta no la entendí muy bien... pero si te refieres a acceder a un parámetro determinado por su nombre sería así: IBQuery.ParamByName(<NombreParametro>)

Última edición por jmariano fecha: 21-08-2005 a las 19:39:13.
Responder Con Cita
  #7  
Antiguo 21-08-2005
perillan perillan is offline
Miembro
 
Registrado: feb 2005
Posts: 82
Poder: 22
perillan Va por buen camino
He repasado la cláusula "SELECT" y efectivamente tienes toda la razón había una línea en blanco y ahora da un error de índice 'list index out of bounds(1)'. que se debe poner con la cláusula ("WHERE").
Un saludo y perdona las molestias que te estoy dando.
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


La franja horaria es GMT +2. Ahora son las 00:55:45.


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