• Facebook
  • Google Plus
  • Delphiaccess Feed
  • Twitter
  • YouTube


Autor Tema: [RESUELTO] delphi 7 o XE2, MySQL 5.1 y storeprocedure  (Leído 953 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado JuanPalmaSoft

  • Usuario Activo
  • ***
  • Gracias
  • -Dados: 0
  • -Recibidos: 2
  • Mensajes: 71
  • Calificaciones: +2/-0
delphi 7 o XE2, MySQL 5.1 y storeprocedure
« en: 24 de Julio de 2012, 15:54:03 »
No logro con los conectores de DB que me funcione bien  un storeprocedure. ej delphi 7  con ningun provider de BD logro que me trabajen bien. o no los reconoce o no me roconoce los parametros d eentrada y salida, he visto ZEOs, BDE y ADO. alguien me pudoiera ayudar en esto.

los store procudure en la BD trabajan perfecto.


gracias



Desconectado egostar

  • Administrador
  • ******
  • Gracias
  • -Dados: 1098
  • -Recibidos: 581
  • Mensajes: 9,230
  • Calificaciones: +637/-7
  • Sexo: Masculino
  • coding my life
    • MeXistemas punto com
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #1 en: 24 de Julio de 2012, 16:02:48 »
Que componente estas utilizando para ejecutar el SP ?

Yo ejecuto el SP (Firbird) desde un IBQuery y no desde IBStoredProc.

Saludos

"Si no quieres que la gente se olvide de ti apenas te mueras, escribe algo que valga la pena leerse o valga la pena escribirse."

- Benjamin Franklin

"Los programadores hicimos un pacto con dios, el no hace sistemas y nosotros no hacemos milagros."

    

Conectado poliburro

  • Administrador
  • ******
  • Gracias
  • -Dados: 93
  • -Recibidos: 296
  • Mensajes: 2,803
  • Calificaciones: +320/-0
  • Sexo: Masculino
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #2 en: 25 de Julio de 2012, 08:03:28 »
Yo ejecuto procedimientos almacenados con Delphi y ADO pero usado MyOdbc como capa de conexión...

¿Qué configuración usas?
Mi corazón late a la izquierda ... Conoce mi blog http://elpoli.delphiaccess.com

Desconectado JuanPalmaSoft

  • Usuario Activo
  • ***
  • Gracias
  • -Dados: 0
  • -Recibidos: 2
  • Mensajes: 71
  • Calificaciones: +2/-0
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #3 en: 25 de Julio de 2012, 10:34:49 »
en estos momentos  uso BDE y el componente para ejecutar los sp,   TStoredProc

Desconectado JuanPalmaSoft

  • Usuario Activo
  • ***
  • Gracias
  • -Dados: 0
  • -Recibidos: 2
  • Mensajes: 71
  • Calificaciones: +2/-0
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #4 en: 25 de Julio de 2012, 10:38:18 »
en ADO como haces la configuracion. y en caso de ejecutar el sp con un TQuery como lo ejecutas?

Conectado poliburro

  • Administrador
  • ******
  • Gracias
  • -Dados: 93
  • -Recibidos: 296
  • Mensajes: 2,803
  • Calificaciones: +320/-0
  • Sexo: Masculino
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #5 en: 25 de Julio de 2012, 10:46:09 »
No amigo... BDE es lo peor que puedes usar para conectarte a cualquier base de datos... Debes cambiarte a ADO...

Haces lo siguiente:

1- Instalas MyODC
2- Creas un DSN Con los datos de tu servidor Mysql
3- colocas un ADO Conexion en tu aplicación y en conecction string eliges el proveedor Para ODBC  y seleccionas el DSN que has creado.
Luego colocas un TADOStoredProcedure, le defines su conexión y el nombre del SP, al dar click en parámtros de manera automática los creará y te los mostrará....


Es muy sencillo amigo

Mi corazón late a la izquierda ... Conoce mi blog http://elpoli.delphiaccess.com

Conectado poliburro

  • Administrador
  • ******
  • Gracias
  • -Dados: 93
  • -Recibidos: 296
  • Mensajes: 2,803
  • Calificaciones: +320/-0
  • Sexo: Masculino
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #6 en: 25 de Julio de 2012, 10:47:00 »
Si deseas invocar el SP como si fuera un query coloca un TADOQUERY y en SQL coloca

CALL DbName.SPNAME(Parameters)
Mi corazón late a la izquierda ... Conoce mi blog http://elpoli.delphiaccess.com

Desconectado egostar

  • Administrador
  • ******
  • Gracias
  • -Dados: 1098
  • -Recibidos: 581
  • Mensajes: 9,230
  • Calificaciones: +637/-7
  • Sexo: Masculino
  • coding my life
    • MeXistemas punto com
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #7 en: 25 de Julio de 2012, 11:01:43 »
en ADO como haces la configuracion. y en caso de ejecutar el sp con un TQuery como lo ejecutas?

Con BDE y TStoredProc:

Código DELPHI
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   StoredProc1.ParamByName('PARAMETRO_ENTRADA').AsString := 'LO QUE SEA';
  4.   StoredProc1.ExecProc;
  5.   Caption := StoredProc1.ParamByName('PARAMETRO DE SALIDA').AsString;
  6. end;
  7.  

Con IBX y TIBQuery:

Código DELPHI
  1. procedure TForm1.Button2Click(Sender: TObject);
  2. begin
  3.   ibQuery.SQL.Text := ' SELECT SP("LO QUE SEA") ';
  4.   ibQuery.Open;
  5.   Caption := ibQuery.fields[0].AsString;
  6. end;
  7.  

Lo hago de memoria, así que puede haber algún detalle.

Saludos

"Si no quieres que la gente se olvide de ti apenas te mueras, escribe algo que valga la pena leerse o valga la pena escribirse."

- Benjamin Franklin

"Los programadores hicimos un pacto con dios, el no hace sistemas y nosotros no hacemos milagros."

    

Desconectado JuanPalmaSoft

  • Usuario Activo
  • ***
  • Gracias
  • -Dados: 0
  • -Recibidos: 2
  • Mensajes: 71
  • Calificaciones: +2/-0
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #8 en: 25 de Julio de 2012, 12:31:20 »
uso el mySQl ODBC 3.51  sigue sin mostrarme los parametros del sp. utilizando ADO.

Conectado poliburro

  • Administrador
  • ******
  • Gracias
  • -Dados: 93
  • -Recibidos: 296
  • Mensajes: 2,803
  • Calificaciones: +320/-0
  • Sexo: Masculino
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #9 en: 25 de Julio de 2012, 12:56:56 »
Me podrías mostrar tu cadena de conexión por favor?
Mi corazón late a la izquierda ... Conoce mi blog http://elpoli.delphiaccess.com

Conectado poliburro

  • Administrador
  • ******
  • Gracias
  • -Dados: 93
  • -Recibidos: 296
  • Mensajes: 2,803
  • Calificaciones: +320/-0
  • Sexo: Masculino
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #10 en: 25 de Julio de 2012, 12:59:59 »
También el encabezado de tu sp y la configruación que creaste en el ODBC
Mi corazón late a la izquierda ... Conoce mi blog http://elpoli.delphiaccess.com

Conectado poliburro

  • Administrador
  • ******
  • Gracias
  • -Dados: 93
  • -Recibidos: 296
  • Mensajes: 2,803
  • Calificaciones: +320/-0
  • Sexo: Masculino
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #11 en: 25 de Julio de 2012, 13:02:35 »
Por cierto debes usar Mysql ODBC 5.1 Driver
Mi corazón late a la izquierda ... Conoce mi blog http://elpoli.delphiaccess.com

Desconectado egostar

  • Administrador
  • ******
  • Gracias
  • -Dados: 1098
  • -Recibidos: 581
  • Mensajes: 9,230
  • Calificaciones: +637/-7
  • Sexo: Masculino
  • coding my life
    • MeXistemas punto com
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #12 en: 25 de Julio de 2012, 13:05:14 »
Por cierto debes usar Mysql ODBC 5.1 Driver

 *-) *-) *-), pequeño detalle :)

Saludos

"Si no quieres que la gente se olvide de ti apenas te mueras, escribe algo que valga la pena leerse o valga la pena escribirse."

- Benjamin Franklin

"Los programadores hicimos un pacto con dios, el no hace sistemas y nosotros no hacemos milagros."

    

Desconectado JuanPalmaSoft

  • Usuario Activo
  • ***
  • Gracias
  • -Dados: 0
  • -Recibidos: 2
  • Mensajes: 71
  • Calificaciones: +2/-0
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #13 en: 25 de Julio de 2012, 13:33:25 »
cadena

Provider=MSDASQL.1;Password=sysadm;Persist Security Info=True;User ID=sysadm;Data Source=MEmpresaDelphi

sp

Código SQL
  1. CREATE DEFINER = 'root'@'localhost' PROCEDURE `Sys_Valida_Entrada`(
  2.         IN Usuario VARCHAR(8),
  3.         IN Clave VARCHAR(8),
  4.         OUT Entrar BOOLEAN
  5.     )
  6.     NOT DETERMINISTIC
  7.     CONTAINS SQL
  8.     SQL SECURITY DEFINER
  9.     COMMENT ''
  10. BEGIN
  11.  DECLARE Existe INTEGER;
  12.  
  13.  SET Existe = 0;
  14.  
  15.  SELECT COUNT(*) INTO Existe FROM usuario
  16.  WHERE CLAVEUSUARIO = Usuario AND  CLAVEACCESO = Clave;
  17.  
  18.  IF Existe > 0  THEN  SET Entrar = 1;
  19.  ELSE SET Entrar = 0;
  20.  END IF;
  21.  
  22. END;

« última modificación: 25 de Julio de 2012, 13:57:23 por egostar »

Desconectado JuanPalmaSoft

  • Usuario Activo
  • ***
  • Gracias
  • -Dados: 0
  • -Recibidos: 2
  • Mensajes: 71
  • Calificaciones: +2/-0
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #14 en: 25 de Julio de 2012, 13:50:44 »
con el odbc 5.1 me pasa lo mismo, me faltara alguna actualizacion a delphi 7?

Conectado poliburro

  • Administrador
  • ******
  • Gracias
  • -Dados: 93
  • -Recibidos: 296
  • Mensajes: 2,803
  • Calificaciones: +320/-0
  • Sexo: Masculino
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #15 en: 25 de Julio de 2012, 13:51:30 »
Los parámetros de salida no están soportados para su uso con los componentes TADO STORED...
para hacerlo por query sería de la forma:

Código DELPHI
  1. ComponenteQuery.Sql.Text := 'CALL DBNAME.Sys_Valida_Entrada("usuario","Clave",@Entrar); Select @Entrar';
  2. ComponenteQuery.Open

El open te devolverá  dos recorsets uno con el count y el otro con el mensaje de error...


saludos






Mi corazón late a la izquierda ... Conoce mi blog http://elpoli.delphiaccess.com

Desconectado JuanPalmaSoft

  • Usuario Activo
  • ***
  • Gracias
  • -Dados: 0
  • -Recibidos: 2
  • Mensajes: 71
  • Calificaciones: +2/-0
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #16 en: 26 de Julio de 2012, 12:42:08 »
Gracias por todo, pero con ZEOS  7.0.0 dev  lo resolvi de esta forma,

Código DELPHI
  1. with ZQuery1 do
  2.   begin
  3.    Active:=False;
  4.    Connection:=ZBaseDatos;
  5.    Close;
  6.    SQL.Clear;
  7.    SQL.Add('call Sys_Valida_Entrada(:usuario, :clave, @entrar)');
  8.    ParamByName('usuario').AsString  := 'ADMIN';
  9.    ParamByName('clave').AsString    := 'a';
  10.    ExecSQL;
  11.    SQL.Clear;
  12.    SQL.Add('select @entrar');
  13.    Open;
  14.    entrar := ZQuery1.fields[0].Asinteger;
  15.    Close;
  16.   end;
  17.   ZBaseDatos.Reconnect;
parecida a la solucion dada anteriormente, pero no me dejaba poner dos sentencias dentro de una misma llamada. Por eso las separe.

el tema esta como me dices en la variables de salida, definidas en los SP.
« última modificación: 26 de Julio de 2012, 12:53:37 por poliburro »

Conectado poliburro

  • Administrador
  • ******
  • Gracias
  • -Dados: 93
  • -Recibidos: 296
  • Mensajes: 2,803
  • Calificaciones: +320/-0
  • Sexo: Masculino
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #17 en: 26 de Julio de 2012, 12:55:03 »
Me alegra que lo hayas resuelto al final mi estimado amigo...

Me he tomado la libertad de editar tu mensaje para colocar las etiquetas delphi pues de esta manera tu código se hace más legible..
Mi corazón late a la izquierda ... Conoce mi blog http://elpoli.delphiaccess.com

Desconectado JuanPalmaSoft

  • Usuario Activo
  • ***
  • Gracias
  • -Dados: 0
  • -Recibidos: 2
  • Mensajes: 71
  • Calificaciones: +2/-0
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #18 en: 26 de Julio de 2012, 12:59:52 »
como haces lo de poner las etiquetas?

gracias

Conectado poliburro

  • Administrador
  • ******
  • Gracias
  • -Dados: 93
  • -Recibidos: 296
  • Mensajes: 2,803
  • Calificaciones: +320/-0
  • Sexo: Masculino
Re: delphi 7 o XE2, MySQL 5.1 y storeprocedure
« Respuesta #19 en: 26 de Julio de 2012, 13:15:30 »
Seleccionas tu código y presionas el botón con el ícono de delphi.. ya sabes el del casco romano...
Mi corazón late a la izquierda ... Conoce mi blog http://elpoli.delphiaccess.com