From: | Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com> |
---|---|
To: | Edwin Quijada <listas_quijada(at)hotmail(dot)com>, systemguards(at)gmail(dot)com, listas(at)yoel(dot)com(dot)ar |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: OT , Obtener ID (PK) dese código VB6 con odbc |
Date: | 2007-06-28 00:21:33 |
Message-ID: | 650356.55559.qm@web63707.mail.re1.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
--- Edwin Quijada <listas_quijada(at)hotmail(dot)com>
escribió:
> Gabriel , como eres el master en VB que tal si te
> pruebas como funcionaria
> el
> insert....returning y posteas la solucion por aca
> Claro , eso invocandolo desde VB.
>
>
No hagas top-posting, jeje.
Bueno Edwin, como no soy Master de nada, no logre
mucho con returning desde postgreSQL si alguien se
anima y me ilustra como cargo el resultado del
returning en una variable y esto lo retorna una
funcion, ya tengo la solucion mientras doy esta que es
menos completa y para dar una idea, o sea poco
elaborada.
Empecemos a ver la cosa desde el lado de postgresql
Tabla
CREATE TABLE "public"."deposito" (
"id_deposito" SERIAL,
"deposito" VARCHAR(50),
CONSTRAINT "deposito_id_deposito_key"
UNIQUE("id_deposito")
) WITHOUT OIDS;
En la version de postgesql se crea sola
CREATE SEQUENCE "public"."deposito_id_deposito_seq"
INCREMENT 1 MINVALUE 1
MAXVALUE 2147483647 START 1
CACHE 1;
Funcion, en esto los genios de aqui pueden aportar mas
que yo, pero con mis pocos conocimientos, aca estaria
CREATE OR REPLACE FUNCTION "public"."fnc_deposito"
(cdeposito varchar) RETURNS integer AS
$body$
declare
cdeposito alias for $1;
ndeposito integer;
t2_row deposito_id_deposito_seq%ROWTYPE;
BEGIN
SELECT * into t2_row from deposito_id_deposito_seq;
ndeposito:=t2_row.last_value+1;
insert into deposito (deposito) select $1;
return ndeposito;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE RETURNS NULL ON NULL INPUT
SECURITY INVOKER;
Bueno con esto del lado de postgresql. nos vamos para
Windows, y aca es donde casi toda la lista me tira
pedradas.
Creamos el DSN que nos conecte a la base de datos.
Y ahora es donde las pedradas duelen por que nos vamos
para visual basic.
Primero cree un dataenviroment.dsr
Defini la conexion apuntando al DSN
y con boton izquierdo del mouse inserte un
procedimiento almacenado, entre todos elegi
public.fnc_deposito, usado para este ejemplo
En el Form1 creado en el nuevo proyecto con un text
box y un command button,
digite este pequenio codigo.
Option Explicit
Private Sub Command1_Click()
Dim a As Integer
a = Dtadeposito.public_fnc_deposito(Text1.Text)
MsgBox a
End Sub
Fijate que no tuve que hacer mucho a base de codigo,
como abrir y cerrar un recordset para insertar ni nada
de eso.
O poner un recordset.addnew o un adodatacontrol con
update cancel y todas esas historias.
atte
Gabriel Hermes Colina Zambra
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Gabriel Hermes Colina Zambra | 2007-06-28 00:39:15 | insert ......... returning ? |
Previous Message | Alvaro Herrera | 2007-06-27 22:39:35 | Re: funcion no existe |