Club Delphi  
    Paypal   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

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-06-2004
Brewster Brewster is offline
Miembro
 
Registrado: abr 2004
Posts: 56
Poder: 23
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
  #2  
Antiguo 08-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
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
  #3  
Antiguo 09-06-2004
Brewster Brewster is offline
Miembro
 
Registrado: abr 2004
Posts: 56
Poder: 23
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
  #4  
Antiguo 09-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
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
  #5  
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 14:56:34.


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