Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-02-2010
Er0s Er0s is offline
Miembro
 
Registrado: mar 2008
Posts: 75
Poder: 17
Er0s Va por buen camino
Consultas Access en Delphi

Buenos días!!

He estado buscando por el foro y no encuentro nada que satisfazga mi deseo.

Estoy haciendo una aplicacion para mi uso personal "Servicio Tecnico Informatico" en el que tengo de momento dos tablas hechas en access Clientes y Averias. Las tablas estan Bien definidas me funciona todo a la perfeccion añado borro edit, bla bla bla.

Mi problema viene a la hora de sacar las consultas en pantalla digamos que quiero ver el historial de averias del pc de un cliente, en access pide el DNI del cliente y me saca toda la informacion, por lo que funciona perfetamente ,pero... como puedo pasar esa consulta a delphi.

Cada vez que lo intento me saca el mensaje "Pocos parametros se esperaba 1", y supongo que es el DNI que en acces tengo como filtro para que saque la informacion.

No se si me explique bien o me entendereis, espero que si y a ver si me echais un cable. Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 10-02-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Er0s, bienvenido al foro, sería bueno que pusieras el codigo delphi que tienes.

Para hacer una consulta debes hacerlo de esta forma:

Código Delphi [-]
  Query.Close;
  Query.Sql.Text := 'Select * From Clientes Where DNI='+Edit1.Text;
  Query.Open;

Suponiendo que el DNI lo introduces en un Edit, si tu campo DNI es String debes añadir comillas.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 10-02-2010
Er0s Er0s is offline
Miembro
 
Registrado: mar 2008
Posts: 75
Poder: 17
Er0s Va por buen camino
Pues codigo no he metido nada aún, todo esta hecho con clicks de raton.

Estoy utilizando un TADOStoreProc pero como como decia antes me salta el error de Falta un Parametro. Si en lugar de esa consulta que pide un parametro metro una consulta ya filtrada me lo muestra perfectamente.

Y quisiera saber si hay una propiedad de este componente que me pida en pantalla ese parametro que le falta y que supongo que se referirá, en este caso, al DNI que en access pido.
Responder Con Cita
  #4  
Antiguo 10-02-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Er0s Ver Mensaje
Y quisiera saber si hay una propiedad de este componente que me pida en pantalla ese parametro que le falta y que supongo que se referirá, en este caso, al DNI que en access pido.
No.

Como bien ya te ha dicho Caro, lo mejor es que crees las consultas en tu programa Delphi, ya que así tendrás más control sobre lo que haces y si algun día decides cambiar de Base de Datos, el cambio será menos traumático.

Si aun así deseas utilizar las consultas creadas en Access (por que sean muy complejas o porque no deseas reescribirlas) debes utilizar para llamarlas el componente TADOStoredProc.

El tema de los parámetros de Access en las consultas (que te lo pida) no es un tema del motor de Base de Datos, sino del propio Access como programa; Por lo tanto si usas el motor "desde fuera", por ejemplo desde un programa Delphi+ADO como tú estás haciendo, nunca te pedirá esos parámetros.

Debes utilizar un TADOStoredProc y definir como parámetros del Stored, los mismo que tienes definidos en la consulta. Antes de llamarlo, los rellenas y luego haces la llamada.

Cita:
Empezado por Er0s Ver Mensaje
...pero como como decia antes me salta el error de Falta un Parametro. Si en lugar de esa consulta que pide un parametro metro una consulta ya filtrada me lo muestra perfectamente.
Por que no estás pasando el parámetro que el ADOStoredProc necesita. POr eso cuando la consulta no tiene parámetros sí funciona.

Haz una búsqueda en los foros por Parametros y ADOStoredProc y verás como te salen unos cuantos hilos al respecto con bastantes ejemplos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 10-02-2010
Er0s Er0s is offline
Miembro
 
Registrado: mar 2008
Posts: 75
Poder: 17
Er0s Va por buen camino
Gracias Caro y neftali por responder

Esta noche mirare porque ando en el curro.... pero si no entiendo mal neftali, me estas diciendo que use codigo para acceder a las BD no? como si de un fichero se tratase no?

Disculpad mi ignorancia
Responder Con Cita
  #6  
Antiguo 10-02-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Er0s Ver Mensaje
Esta noche mirare porque ando en el curro.... pero si no entiendo mal neftali, me estas diciendo que use codigo para acceder a las BD no? como si de un fichero se tratase no?
Hola de nuevo, lo que te dice Neftali es que lo hagas de la forma del ejemplo que he puesto en mi primer mensaje.

Si quieres hacerlo con tu consulta de access, debes crearte el parametro con el mismo nombre que tienes en access como te dijo Neftalí, y no te olvides ponerle su tipo en la propiedad DataType. El código delphi para ejecutar tu consulta pasandole el prámetro sería así:

Código Delphi [-]
 ADOStoredProc1.Close; //También vale con Active := False;
 ADOStoredProc1.Prepared := True;;
 ADOStoredProc1.Parameters[0].Value := StrToInt(Edit1.Text);
 ADOStoredProc1.Open; //Active := True;

Ahora creo que si el procediento no devuelve valor se debe ejecutar con ADOStoredProc1.ExecProc, pero mejor si Neftalí nos confirma eso.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #7  
Antiguo 11-02-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Er0s Ver Mensaje
...pero si no entiendo mal neftali, me estas diciendo que use codigo para acceder a las BD no? como si de un fichero se tratase no?
Intentaré explicarme mejor.

Hay 2 formas de ejecutar una consulta en Access desde un programa Delphi.

OPCION 1: Crear la consulta en Delphi utilizando SQL. Para ello necesitaras un componente TADOQuery; Y como tu consulta tiene una parámetro (valor variable) que comentas que es el DNI, deberás usar algo similar a lo que Caro te ha comentado aquí.

OPCION 2: Si no sabes SQL o quieres usar la consulta que has creado en Access, debes utilizar un componente TADOStoredProc. Como tu consulta tiene un parámetro variable, debes usar para rellenarlo un código similar al que Caro te ha comentado en este otro post.

Si tu consulta no tuviera parámetros podrías utilizar un TADOStoredProc directamente o pegar la SQL en un TADOQuery y ejecutarlo directamente (sin código). Como tu consulta tieve un parámetro variable (DNI) o se lo añades con código al TADOQuery(SQL) o se la pasas al TADOStoredProc. En ambos casos deberás utilizar algo de código.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
Consultas de ACCESS en Delphi 7 y ADO saldanaluis Tablas planas 1 19-12-2007 07:16:26
consultas sql en access alfil123 Conexión con bases de datos 2 31-10-2006 03:01:11
Como modificar consultas de access en tiempo de ejecucion ernestocad SQL 0 06-04-2005 16:30:05
Consultas a db en Access mediante el Tadoquery cancerbero Tablas planas 7 20-07-2004 22:52:23
Consultas por fecha en access Mashabak Conexión con bases de datos 2 16-06-2004 19:33:17


La franja horaria es GMT +2. Ahora son las 02:42:36.


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