• Viernes 8 de Noviembre de 2024, 20:53

Autor Tema:  Como llamar funciones de base de datos desde VB 6.0????  (Leído 5833 veces)

mariosnash

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Como llamar funciones de base de datos desde VB 6.0????
« en: Martes 24 de Marzo de 2009, 16:04 »
0
Bueno el problema que tengo es que nose como llamar funciones que se encuentran en una base de datos postgres usando el VB 6.0  :ouch: ....aclaro que me contecto atraves de un DataEnvironment y que algunas funciones me devuelven datos como asi tambien reciben parametros, por favor espero su ayuda  :(
muchas gracias  :)

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Como llamar funciones de base de datos desde VB 6.0????
« Respuesta #1 en: Martes 24 de Marzo de 2009, 17:29 »
0
Supongo que te refieres a PostgresSQL. ¿Qué tal si detallas más tu problema? ¿Algo de código? (sin olvidar las etiquetas, por supuesto).

mariosnash

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como llamar funciones de base de datos desde VB 6.0????
« Respuesta #2 en: Martes 24 de Marzo de 2009, 18:27 »
0
La base de datos es PostgresSQL como decis y la funcion que cree en ella es:
Código: SQL
  1. CREATE FUNCTION diferencia (int4, int4)
  2. RETURNS int4
  3. AS $$
  4. DECLARE
  5. a int4;
  6. b int4;
  7. res int4;
  8. BEGIN
  9. a:= $1;
  10. b:= $2;
  11. res:= b - a;
  12. RETURN res;
  13. END;
  14. $$
  15. LANGUAGE 'plpgsql';
  16.  

Es una funcion sencilla que la estoy usando de prueba, es una diferencia entre dos parametros y me devuelve un resultado, en el postgres funciona.
Ahora cuando yo creo un proyecto en VB 6.0 y me conecto atraves de un DataEnvironment: creando un comando que me llame a la funcion, creando un form con 3 textbox (dos para los parametros de la funcion y uno para el resultado) y un command button....nose como hacer para que me funcione, la codificacion que uso es la siguiente:

D.diferencia (text1.text, text2.text)
set text3.datasource = D.rsdiferencia

Donde "D" es mi conexion o el nombre de mi DataEnvironment
"diferencia" es mi comando creado para llamar a la funcion

Para crear el comando en el DataEnvironment lo que hago es clic derecho en mi conexion "agregar comando" una vez creado clic derecho en el comando propiedades, voy al origen de datos y en Objetos de la base de datos elijo procedimiento almacenado, en nombre del objeto elijo la funcion que cree en la base de datos "public.diferencia".....luego voy a la pestaña Avanzadas y y en tipo de bloqueo elijo "Optimistic" anteriormente marco el chekbox que me dice devuelve recorset.....

y bueno espero se halla entendido algo, saludos y gracias

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Como llamar funciones de base de datos desde VB 6.0????
« Respuesta #3 en: Martes 24 de Marzo de 2009, 18:49 »
0
Me repito: UTILIZA LAS ETIQUETAS DE CÓDIGO, que no hay quien lea esos garabatos

mariosnash

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como llamar funciones de base de datos desde VB 6.0????
« Respuesta #4 en: Martes 24 de Marzo de 2009, 21:12 »
0
mmm....la verdad es que soy nuevito en esto y no se a que te referis con etiquetas, en relidad mi codificacion una vez creada mi conexion a la base de datos y el comando que llama a la funcion es solo esto:

Código: Visual Basic
  1. Private Sub Command1_Click()
  2. D.diferencia (text1.text, text2.text)
  3. set text3.datasource = D.rsdiferencia
  4.  

solo quiero saber con un ejemplo como puedo llamar a una funcion, pasarle parametros y recibir resultado de la misma funcion que se encuentra en una base de datos

perdon si no me hago entender  :unsure:
gracias

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Como llamar funciones de base de datos desde VB 6.0????
« Respuesta #5 en: Miércoles 25 de Marzo de 2009, 01:49 »
0
Leete las normas del foro sobre cómo publicar tu código y seguimos hablando.

mariosnash

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como llamar funciones de base de datos desde VB 6.0????
« Respuesta #6 en: Miércoles 25 de Marzo de 2009, 03:16 »
0
perdon por incumplir con las reglas del foro.
y bueno el unico codigo que uso para llamar a la funcion es este:

Código: Text
  1. Private Sub Command1_Click()
  2. D.diferencia (text1.text, text2.text)
  3. set text3.datasource = D.rsdiferencia
  4.  
  5.  

en donde le paso los parametros que cargo en 2 textbox y espero me pase el resultado en un tercer textbox.
La funcion creada y que funciona en PostgresSQL es:

Código: Text
  1. create function diferencia (int4, int4)
  2. returns int4
  3. as $$
  4. declare
  5. a int4;
  6. b int4;
  7. res int4;
  8. begin
  9. a:= $1;
  10. b:= $2;
  11. res:= b - a;
  12. return res;
  13. end;
  14. $$
  15. language 'plpgsql';
  16.  
  17.  

gracias

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Como llamar funciones de base de datos desde VB 6.0????
« Respuesta #7 en: Miércoles 25 de Marzo de 2009, 09:52 »
0
No hay problema.

Código: Visual Basic
  1. D.diferencia (text1.text, text2.text)
  2. set text3.datasource = D.rsdiferencia
  3.  
Cita de: "mariosnash"
Donde "D" es mi conexion o el nombre de mi DataEnvironment
"diferencia" es mi comando creado para llamar a la funcion
¿Y rsdiferencia qué es?

mariosnash

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Como llamar funciones de base de datos desde VB 6.0????
« Respuesta #8 en: Miércoles 25 de Marzo de 2009, 14:51 »
0
"rsdiferencia" es el recorset del comando diferencia, lo hago asi ya que la funcion me devuelve un valor, pero es evidente que algo esta mal porque no me sale  :argh:, y estoy seguro que el problema esta en VB 6.0, ya que la funcion en postgresSQL funciona a la perfeccion
gracias por interesarte en aclarar mis dudas  :)
saludos

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Como llamar funciones de base de datos desde VB 6.0????
« Respuesta #9 en: Miércoles 25 de Marzo de 2009, 16:30 »
0
Cita de: "mariosnash"
"rsdiferencia" es el recorset del comando diferencia
Puedes poner por favor la declaración del objeto D.