Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-06-2004
Brewster Brewster is offline
Miembro
 
Registrado: abr 2004
Posts: 56
Poder: 20
Brewster Va por buen camino
Intraweb: Ejecutar una consulta dentro del propio ACCESS

Mi duda es la siguiente, he leido que se pueden ejecutar desde Intraweb consultas que están dentro de la propia base de datos de ACCESS a la que se conecta.

Hasta ahora no he encontrado exactamente como es.

¿Alguien sabe algo?

Gracias.
Responder Con Cita
  #2  
Antiguo 08-06-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Con un componente TStoredProc o con TADOStoredProc.
Luego con TStoredProc (BDE) le "enchufas" a la Bd en la propiedad DatabaseName y la propiedad StoredProcName le pones la consulta/procedimiento que tengas en la base de datos (te saldrá un desplegable)

y si es conTADOStoredProc lo mismo le "enchufas" la Bd en la propiedad Connection o DataSource como prefieras y luego le pones la consulta/procedimiento que quieras en su propiedad ProcedureName.


Espero que te haya servido, Saludos, Tony
Responder Con Cita
  #3  
Antiguo 08-06-2004
Brewster Brewster is offline
Miembro
 
Registrado: abr 2004
Posts: 56
Poder: 20
Brewster Va por buen camino
Estoy usando un TADOStoredProc y las inserciones, modificaciones y borrado me lo hace correctamente.

Pero cuando es un select no, mi codigo es.-

proceder := TADOStoredProc.Create(Nil);
proceder.ConnectionString := 'C:\xxx\bdPrueba.mdb';
proceder.ProcedureName := 'insPedido';
proceder.ExecProc;

while not proceder.EOF do begin
---
End;

Pero siempre me da como resultado vacio, la pruebo en el propio ACCESS y me devuelve varios registros.

He probado con otros métodos aparte de ExecProc pero ninguno parece ir bien.

¿Alguien sabe como ejecutar select que devuelva múltiples registros?
Responder Con Cita
  #4  
Antiguo 08-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Utiliza un .Open en lugar de un .ExecProc, si estás esperando que te devuelva un Dataset (como es el caso actual).

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 09-06-2004
Brewster Brewster is offline
Miembro
 
Registrado: abr 2004
Posts: 56
Poder: 20
Brewster Va por buen camino
Ya había probado lo del Open, de todos modos gracias.

Pero si otra pregunta, si la consulta interna del ACCESS tiene un parámetro, como por ejemplo.-

select * from prueba where precio>[precio]

Desde Delphi com paso el valor a ese parámetro, lo he probado de varias maneras.-

ADOStoredProc.Parameters.ParamValues['precio'] := 77;

ADOStoredProc.Parameters.Parambyname['precio'].value := 77;

ADOStored.Proc.Parameters.Items[1].Value := 77;

Pero nada.

Espero respuesta. Muchas gracias.
Responder Con Cita
  #6  
Antiguo 09-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Cita:
Empezado por Brewster
Ya había probado lo del Open, de todos modos gracias.
Sigue haciendo pruebas con el Open, puesto que con el ExecProc no tienes ninguna posiblidad de abrir un Dataset (y por tanto navegar por él, con First, Next, Eof, ...).

Cita:
Empezado por Brewster
Pero si otra pregunta, si la consulta interna del ACCESS tiene un parámetro, como por ejemplo.-

select * from prueba where precio>[precio]

Desde Delphi com paso el valor a ese parámetro, lo he probado de varias maneras.-

ADOStoredProc.Parameters.ParamValues['precio'] := 77;

ADOStoredProc.Parameters.Parambyname['precio'].value := 77;

ADOStored.Proc.Parameters.Items[1].Value := 77;
Las 3 formas són correctas. El problema debe estar en que no te encuentra el parámetro. Cuando usaba ADO, creaba los parámetros como persistentes para no tener este problema. Simplemente en tiempo de diseño vete a la colección Parameters del componente, y modifica alguna propiedad (normalmente la Values) para que el parámetro quede fijado como permanente.

NOTA : Si no te aparecen los parámetros, lo puedes crear manualmente.

PD : Respecto al primer código, ¿ porqué no utilizas una conexión, en lugar de especificar la ConnectionString en cada comando ?. No estoy seguro, pero es muy probable que se abran distintas conexiones a la base de datos.
Simplemente añade un componente TADOConnection al formulario (o en un DataModule para poder compartirlo entre formularios), y especifica la propiedad Connection del TADOStoredProc a esa conexión.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 09-06-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Siento no haber contestado antes, esta mañanita he estado muu liado en el curro , de todas formas tienes alguien que sabe más que yo de delphi que te ha asesorado perfectamente. En cuanto a lo que comentas de los parametros, como bien dice Guillotmarc, son correctos prueba lo que te comenta él, tambien pon antes de la asignación de parámetros esta instrucción:

Código Delphi [-]
ADOStoredProc.prepare;
ADOStoredProc.Parameters.Parambyname['precio'].value := 77;
ADOStoredProc.Open // en el caso de que sea un select claro.

Saludos, Tony
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 23:06:35.


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