Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

vfp - postgresql

Estas en el tema de vfp - postgresql en el foro de PostgreSQL en Foros del Web. Buenos dias: Trabajo con vfp6 original, y la empresa no desea invertir en software, es por ello que tengo que solucionar mis problemas de programacion ...
  #1 (permalink)  
Antiguo 23/07/2009, 11:59
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 8 meses
Puntos: 0
vfp - postgresql

Buenos dias:
Trabajo con vfp6 original, y la empresa no desea invertir en software, es por ello que tengo que solucionar mis problemas de programacion con esta version, ademas estoy empezando a trabajar con postgresql 8.3
mi consulta es la sgte:
deseo crear una funcion en postgresql que me permita insertar nuevos articulo en mi tabla art_a que pertene a la base de datos inventario creada en postgresql.

para ello llamo a la funcion asi:

no_error = SQLEXEC(gnConnHandle,'select manart1(?da1,?da2)')
IF no_error < 0
=MESSAGEBOX('Tabla no disponible',16,'Error')
ENDIF
donde: da1 es, el codigo del articulo
da2 es, el nombre del producto

Nota: mis datos a insertar son exactamente 21 datos (desde da1 hasta da21), pero estoy probando solo con dos campos (da1, da2)
la verdad que por mas que lee el manual de postgresql con respectoa funciones o triggers mas me pierdo, muchas gracias.

ayudeme por favor como deberia ser mi funcion para llegar a lo que deseo,

gracias

JRCORONADO

A su gerencia de un colega muy experimentado me indico que haga lo sgte:

set text to c:\mi_sql.txt noshow
set textmerge on
\\INSERT INTO postgres.ART_A(CODIGO,DESCRIPC,CAMBIO,NANDINA,GRUP O,CLAVE,FACT_VTA,COS_FAB,PRECOSD_A,PRECOSD,DOLAR,T IP_CAMD,VALORV,LOCALIZA,STKACT,SDO_REAL,STKMIN) values ('<<da1>>', '<<da2>>','<<da3>>', '<<da4>>','<<da5>>', '<<da6>>','<<da7>>', '<<da8>>','<<da9>>', '<<da10>>','<<da11>>', '<<da12>>','<<da13>>', '<<da14>>','<<da15>>', '<<da16>>','<<da17>>')
set textmerge off
set textmerge to
ssql = FILETOSTR('c:\mi_sql.txt')
no_error = SQLEXEC(gnConnHandle,ssql)
IF no_error < 0
=MESSAGEBOX('Tabla no disponible',16,'Error')
ENDIF

Nota: como veran y lo he probado solo mediante esta forma puedo trabajar desde da1 hasta da17, ya que cuando coloco los demas datos a insertar en el registro (da18 hasta da21) no me inserta el registro,ademas deseo hacer el insert mediante una funcion.

muchas gracias,

disculpen tanta molestia y tanta ignorancia.
  #2 (permalink)  
Antiguo 23/07/2009, 17:42
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: vfp - postgresql

Cita:
Iniciado por jrsiste20 Ver Mensaje
Buenos dias:
Trabajo con vfp6 original, y la empresa no desea invertir en software, es por ello que tengo que solucionar mis problemas de programacion con esta version, ademas estoy empezando a trabajar con postgresql 8.3
mi consulta es la sgte:
deseo crear una funcion en postgresql que me permita insertar nuevos articulo en mi tabla art_a que pertene a la base de datos inventario creada en postgresql.

para ello llamo a la funcion asi:

no_error = SQLEXEC(gnConnHandle,'select manart1(?da1,?da2)')
IF no_error < 0
=MESSAGEBOX('Tabla no disponible',16,'Error')
ENDIF
donde: da1 es, el codigo del articulo
da2 es, el nombre del producto

Nota: mis datos a insertar son exactamente 21 datos (desde da1 hasta da21), pero estoy probando solo con dos campos (da1, da2)
la verdad que por mas que lee el manual de postgresql con respectoa funciones o triggers mas me pierdo, muchas gracias.

ayudeme por favor como deberia ser mi funcion para llegar a lo que deseo,

gracias

JRCORONADO

A su gerencia de un colega muy experimentado me indico que haga lo sgte:

set text to c:\mi_sql.txt noshow
set textmerge on
\\INSERT INTO postgres.ART_A(CODIGO,DESCRIPC,CAMBIO,NANDINA,GRUP O,CLAVE,FACT_VTA,COS_FAB,PRECOSD_A,PRECOSD,DOLAR,T IP_CAMD,VALORV,LOCALIZA,STKACT,SDO_REAL,STKMIN) values ('<<da1>>', '<<da2>>','<<da3>>', '<<da4>>','<<da5>>', '<<da6>>','<<da7>>', '<<da8>>','<<da9>>', '<<da10>>','<<da11>>', '<<da12>>','<<da13>>', '<<da14>>','<<da15>>', '<<da16>>','<<da17>>')
set textmerge off
set textmerge to
ssql = FILETOSTR('c:\mi_sql.txt')
no_error = SQLEXEC(gnConnHandle,ssql)
IF no_error < 0
=MESSAGEBOX('Tabla no disponible',16,'Error')
ENDIF

Nota: como veran y lo he probado solo mediante esta forma puedo trabajar desde da1 hasta da17, ya que cuando coloco los demas datos a insertar en el registro (da18 hasta da21) no me inserta el registro,ademas deseo hacer el insert mediante una funcion.

muchas gracias,

disculpen tanta molestia y tanta ignorancia.
Te entendí muy poco de lo que pides.
Lo que necesitas es una función que inserte en una tabla 21 valores?
Deseas pasarle a esa función 21 valores?
Concretamente... en lo que se refiere a postgresql, que es lo que deseas hacer?

Aclara un poco el problema y en la medida de lo posible tratamos de buscar una solución.

Un saludo jrsiste20
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 24/07/2009, 11:11
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: vfp - postgresql

exactamente amigo, muy amable por responder , lo que deseo concretamente es
hacer una función que inserte en una tabla 21 valores.
deseo enviar 21 valores desde fox6 y recibir esos 21 valores en una funcion postgresql para que en esa funcion se inserte un registro en la tabla con esos 21 valores.

JRCORONADO.
  #4 (permalink)  
Antiguo 24/07/2009, 11:25
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: vfp - postgresql

hola amigo te recomiendo que pruebes primero tu funcion postgres donde realizas la insercion de registros desde el pgadmin; asi probaras si es falla desde el punto de vista de la funcion postgres.
  #5 (permalink)  
Antiguo 24/07/2009, 12:00
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: vfp - postgresql

Mi pregunta es:
Por que no hacer el insert directamente?
Necesitas procesar mas información?
No sería la misma cosa?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 24/07/2009, 20:15
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: vfp - postgresql

Deseo hacerlo desde una funcion postgresql, por varios motivos entre ellos:

- mi insert excede los 256 caracteres y yo trabajo con vfp6 original, eso lo
explique en mi mensaje inicial, disculpa si no fui tan claro.
- deseo aprender ha hacer este pequeño trabajo con funcion postgresql para
tener una idea, para cosas mayores. (cual deberia ser el script de mi funcion?,
por favor, se como llamarla desde vfp6 pero no tengo idea de como hacer el
script, a pesar que leo y releo el manual, mas me confundo, disculpa tanta
ignorancia.)
- y si tienes razon, pienso en un futuro no muy lejano hacer operaciones
complejas antes de insertar o actualizar registros en mi tabla desde una funcion.

JRCORONADO
  #7 (permalink)  
Antiguo 25/07/2009, 14:34
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: vfp - postgresql

mira un ejemplo


Código sql:
Ver original
  1. CREATE OR REPLACE FUNCTION insertar(nom text, apellido text) RETURNS void AS $$
  2. BEGIN
  3.     INSERT INTO nombres VALUES(nom,apellido);
  4. END; $$
  5. LANGUAGE 'plpgsql';

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:17.