FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
Hola Er0s, bienvenido al foro, sería bueno que pusieras el codigo delphi que tienes.
Para hacer una consulta debes hacerlo de esta forma:
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. |
#3
|
|||
|
|||
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. |
#4
|
||||
|
||||
Cita:
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:
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. |
#5
|
|||
|
|||
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 |
#6
|
||||
|
||||
Cita:
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í:
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. |
#7
|
||||
|
||||
Cita:
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. |
#8
|
|||
|
|||
El codigo Funciona
Cita:
Última edición por Er0s fecha: 11-02-2010 a las 13:01:17. |
#9
|
||||
|
||||
Cita:
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. |
#10
|
|||
|
|||
Cita:
Llevaba to la mañana probandolo y no habia manera de mostrar datos...... Toda la mañana metiendo DNI en el Edit y que no salen los datos. Una y mil veces hice lo que acabas de escribir y una y mil veces metia el DNI a ver si encontraba al cliente y nada. hasta que viene la iluminacion y me llega a la mente " Calamar esta consulta necesita un nombre no un DNI" lol. Todo Ok, ya me muestra datos. Gracias por vuestra rapida ayuda. Hasta la proxima Duda :P |
#11
|
|||
|
|||
Despues de un año trabajando con componentes TAdoStoreProc, Gracias a vuestra ayuda, me encuentro hoy con un problemilla.
Ejemplo: Tenemos dos explotaciones ganaderas, si escojo una explotación ganadera quiero mostrar un listado de las cabezas de ganado que hay en dicha explotacion y si escojo la otra pues obviamente mostrara las cabezas de ganado que existan. Con los ejemplos que aprendí gracias a vosotros, funciona pero.... 1. selecciono explotacion 2. quiero listado 3. no sale el listado... DBGrid vacia 4. quiero listado 5. Sale el listado siempre que lo solicite de aquí en adelante 6. Si selecciono otra explotacion volvemos al punto 1
Alguna idea de porque no me da la información la primera vez que lo solicito? |
#12
|
||||
|
||||
Hola
Bueno, nunca he usado un TAdoStoreProc, de hecho nunca lo habia visto (que despistado). Lo cierto es que si hay una consulta en access y la quiero usar en mi programa en delphi, tal cual, simplemente la llamo desde un simple ADOTable, como si fuera una tabla mas. Si se necesita filtrarla, pues se hace un filtro. Creo que se le llama una vista, en firebird se usan igualmente. Saludos
__________________
Siempre Novato |
#13
|
|||
|
|||
Hola Caral!!
Siguiendo tus pasos he creado una AdoTable y se la asigno al datasouce y este a la dbgrid hasta ahí todo correcto. Siguiendo el ejemplo anterior, el codigo de explotación es un numero que tengo almacenado en una variable global llamada ExploId. Como filtro la tabla con la variable global? Se puede filtrar dicha tabla mirando en un solo campo de ella o revisa toda la tabla? datamodule1.adotable.filter........ Gracias Última edición por Er0s fecha: 17-03-2011 a las 13:30:40. |
|
|
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 |
|