Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como ejecutar un query de Access en Delphi (https://www.clubdelphi.com/foros/showthread.php?t=13964)

tayra 06-09-2004 01:02:02

Como ejecutar un query de Access en Delphi
 
Cree unos querys en Access y requiero saber como se pueden ejecutar en delphi ya sea mandarlos a llamar para que en tiempo de ejecucion me funcione o como va la estructura UPDATE en delphi, por favor si alguien sabe espero que me pueda ayudar

UPDATE DATOS SET DATOS.NO_EMPLEADO_INV = [DATOS].[NO_EMPLEADO]-4
WHERE ((([DATOS].[NO_EMPLEADO]) Mod 6="5")) Or ((([DATOS].[NO_EMPLEADO]) Mod 6="0"));

Neftali [Germán.Estévez] 06-09-2004 16:44:55

Cita:

Empezado por tayra
Cree unos querys en Access y requiero saber como se pueden ejecutar en delphi

Puesto que el SQL corresponde a un Update supongo que en Access la tienes definida como una consulta de Actualización. Delde Delphi y a través de ADO puedes acceder a éstas consultas con el componente TADOStoreProc.
Coloca un ADOConnection y conectalo al ADOStoreProc, y verás que al acceder a la propiedad ProcedureName en diseño te aparecen la consultas de actualización definidas en tu BD de Access.

tayra 07-09-2004 03:23:08

Ya aplique la opcion que me diste pongo el ADOConnection y ADOstoredprod y en la propiedad ProcedureName no me aparece nada.Tiene que estar de alguna manera grabados en delphi los querys para que me aparezca algo en esta opcion.

tayra 07-09-2004 04:21:12

Ok, ahora sip conecte correctamente el ConnectionString y yap me aparecen los querys de access, pero cuando le pongo activar me pone commandText does not return a result set. sabes tu a que se deba esto

Neftali [Germán.Estévez] 07-09-2004 09:23:05

Cita:

Empezado por tayra
...pero cuando le pongo activar me pone commandText does not return a result set. sabes tu a que se deba esto

Supongo que debes estar usando Open para activar el StoreProc; En lugar de eso utiliza el método .ExecProc

Un saludo.

tayra 12-09-2004 20:09:58

Hola!!

Lo q' hice fue porner un boton para conectar:

procedure TSG.BitBtn3Click(Sender: TObject);
begin
ADOStoredProc1.ExecProc;
ADOStoredProc1.FieldByName('NO_EMPLEADO').AsInteger:= BitBtn3.Spacing;
ADOStoredProc1.Close;
end;

para q' al momento de presioanrlo haga los cambios o ejecute en este caso el query

pero no me funciona sera por q' tengo un DBgrid


SALUDOS!!

Neftali [Germán.Estévez] 13-09-2004 09:21:56

¿La consulta de Access que estás utilizando tiene parámetros? Si es así, en ese caso no te puedo asegurar que vaya a funcionar.

De todas formas no entiendo qué quieres hacer con éste código.
Código Delphi [-]
ADOStoredProc1.ExecProc;
ADOStoredProc1.FieldByName('NO_EMPLEADO').AsInteger:= BitBtn3.Spacing;
ADOStoredProc1.Close;

Después de ejecutar el SP (la consulta) asignas algo a un campo (NO_EMPLEADO) y cierras (Close) :confused: :confused: :confused:

tayra 14-09-2004 05:39:57

OK, como parametros? Es el nombre de un campo o en este caso la columna en la que me tiene que aparecer un numero el q' quiero del query, conecto todo y me sale el acceso al query pero me dice cuando pongo TRUE en active el comandtext no regresa un resultado nose si hay q' poner codigo en alguno de los eventos o algo se me esta olvidando, he estado leyendo acerca de los comnados ADO en delphi para ver si algun codigo se requiere para que me corra el query de access.


Gracias y Saludos

tayra 14-09-2004 06:11:46

Ok, ya vuelvo hacer el procedimiento y conecto el Adoconectiuon con el Adostoredproc hasta aqui todo bien ya me aparece a conexion con los querys pero me aparece que el comando text no regresa ningun valor pero me da la opcion de poner yo la sentencia directa en delphi ahi mismo:

UPDATE DATOS SET DATOS.NO_EMPLEADO_INV = [DATOS].[NO_EMPLEADO]+4
WHERE ((([DATOS].[NO_EMPLEADO]) Mod 6="1")) Or ((([DATOS].[NO_EMPLEADO]) Mod 6="2"));


o tu sabes como va este query redactado en delphi he tratado de muchas formas acomordarlo como estructura en query y no he podido, crees q' me pueads ayudar

Gracias de nuevo y saludos

Neftali [Germán.Estévez] 14-09-2004 09:29:58

Cita:

Empezado por tayra
...cuando pongo TRUE en active el comandtext no regresa un resultado nose si hay q' poner codigo en alguno de los eventos o algo se me esta olvidando...

Vamos a ver si al final nos aclaramos.
La explicación que te di al principio sirve para ejecutar la Consulta de Access, hasta ahí correcto.
Ahora comentas que quires un resultado, pero es que las consultas de actualización (UPDATE o DELETE) no devuelven resultado.

¿Exactamente qué resultado quieres obtener?

Una consulta de tipo UPDATE (como ésta) lo único que hace es actualizar uno a varios registros que cumpan esas condiciones, pero no devuelve nada.
Si a continuación quieres consultar algo (por ejemplo los registros que han cambiado) deberás lanzar otra consulta (con un TADOQuery) con un SELECT (que éste sí devuelve registros).

No se si me he explicado bien. Hay consultas SELECT que devuelven datos y otras (que normalmente conocemos como "comandos") que no devuelven (INSERT, DELETE, UPDATE).

Neftali [Germán.Estévez] 14-09-2004 09:34:21

Cita:

Empezado por tayra
...pero me aparece que el comando text no regresa ningun valor pero me da la opcion de poner yo la sentencia directa en delphi ahi mismo

Correcto, es lo mismo de antes, una SQL de éste tipo no devuelve valor. Y en delphi podrás ejecutarlo tanto con un TADOQuery como con un ADOCommand, y el resultado es el mismo, se actualizan registros, pero no devuelve ningún valor.
Si después de la actualización quieres consultar algo, puedes lanzar otra sentencia SQL y consultar lo que quieras.


La franja horaria es GMT +2. Ahora son las 05:22:47.

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