Post by Alvaro HerreraHumm, quizas me perdi ese mail, cuales eran esas
alternativas?
No tengo por que no creerte creo que sos un gran
aporte a PostgreSQL te envio esas propuestas tal cual
las escribi, pongo lo que hago en Visual y lo que hago
del lado de PostgreSQL
Ejemplo 1
Para mi muy apropiado.
Creo una funcion en el lenguaje PLPGSQL, en
postgresql, (aclaro que si alguna palabra no la pongo
bien por ejemplo plpgsql no se escribe asi, me importa
poco, debatan sobre conceptos por favor).
Retomando el tema aca hay una funcion a la que
pasandole parametros desde visual borra una tabla
auxiliar, la llena de datos le hace algun insert y
podria ser un update en fin todo.
Incluso uno de los select de la insercion invoca otra
funcion.
CREATE OR REPLACE FUNCTION
"central"."fnc_imp_ficha_articulo" (text, date,
integer) RETURNS boolean AS
$body$
begin
delete from central.imp_ficha_stock;
insert into central.imp_ficha_stock
(id_local,sucursal,
empresa,id_lin,documento,serie,numero,fecha,
id_articulo,entradas,salidas,saldos)
select id_local,sucursal,
empresa,id_lin,documento,serie,numero,fecha,
id_articulo,entradas,salidas,saldos from
central.fnc_ficha_articulo($1,$2,$3);
return true;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT
SECURITY INVOKER;
Llamada desde visual
DtaSysGeGcFunc.central_fnc_imp_ficha_articulo
TxtDatos.Text, DTPDESDE.Value,
Val(DataComboLocal.BoundText)
Donde dtasysgegcfunc es igual a un dataenviroment
es un procedimiento del dataenviroment que llama a la
funcion, cuando creas el dataenviroment y su conecion
al DSN podes definir comando o procedimiento,
eligiendo procdimiento nos muestras las funciones de
la base de datos y elgiendo ejecuta esta pasando los
parametros que la funcion exige. aca se representa por
.central_fnc_imp_ficha_articulo, donde central_ es el
nombre del esquema y el punto visual lo representa con
_
TxtDatos.Text = textbox
DTPDESDE.Value = dtpicker
Val(DataComboLocal.BoundText) el valor numerico del
boundtext de un datacombobox.
Esto es facil y muy simple, se usa igual que en M$.
Ejemplo 2.
Se crea la funcion en pgplsql en este caso pongo otra
de ejemplo, pero puedo usar la misma
CREATE OR REPLACE FUNCTION
"central"."fnc_ing_lineas_doc" (bigint) RETURNS date
AS
$body$
declare
v_id_cab alias for $1;
curtime date;
BEGIN
curtime :='now';
delete from central.documentos where id_cab = $1;
insert into central.documentos
(id_cab,id_articulo,id_presupuesto,cantidad,fob,cif,costo_unitario,
costo_unit_final,precio_venta_unitario,dto1,dto2,impuesto_col_1,impuesto_col_2,ubicacion,
conteo)
select
id_cab,id_articulo,id_presupuesto,cantidad,fob,cif,costo_unitario,
costo_unit_final,precio_venta_unitario,dto1,dto2,impuesto_col_1,impuesto_col_2,ubicacion,
conteo from central.aux_lineas_doc where id_cab = $1;
delete from central.aux_lineas_doc where id_cab = $1;
RETURN curtime;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT
SECURITY INVOKER;
y desde un adodatacontrol, desde una conexion definida
por codigo o desde un dataenviroment como es este caso
ejecuto esto.
DtaSysGc.cnSysGeGc.Execute "select * from
central.fnc_ing_lineas_doc(" &
AdoCabezales.Recordset.Fields("id_cab") & ")"
Es Facil.
3 Metodo parecido al que plantea mi tocayo Gabriel
Ferro, a quien confieso le debo el hecho de darle una
mano mejor, que la que le di en la pregunta anterior y
por lo cual le pido disculpas y espero compenzarlo con
esto.
Desde visual y sin crear una funcion en postgresql.
DtaSysGc.cnSysGeGc.Execute "insert into
central.documentos (id_articulo,id_cab,cantidad)
select '" & TxtDatos(0).Text & "' as id_articulo, " &
nCabezales & " as id_cab, " &
Abs(Val(Lbldatos(4).Caption)) & " as cantidad;"
Las comillas dobles encierran todo lo que se va a
ejecuttar, pero si miras esto previamente de un msgbox
o desde el depurador verias que lo que pasa es esto
insert into central.documentos
(id_articulo,id_cab,cantidad) select 'PH8' as
id_articulo, 924,123.45 as cantidad;
Post by Alvaro HerreraPost by Gabriel ColinaA mi tambien, quiza por que muchos tenemos la
necesidad de usar cotidanamente herramientas
productivas, puesto que somos varios (la manga de
profesionales trasnochados) que vos
despectivamente
Post by Gabriel Colinatratas, que usamos el tiempo de transoche por que
en
Post by Gabriel Colinael dia trabajamos para comer.
Vamos, que no era despectiva la intencion, no tienes
para que tomartelo
a mal.
Bien pero asi parecia la respuesta, me alegro Alvaro
de que no sea asi por que te tengo en buena estima y
este tipo de cosas me llevo a apasionarme un poco
puesto que soy un militante en la vida.
Post by Alvaro HerreraPost by Gabriel ColinaEspero que no sea la luz del encandilameinto. Yo
no
Post by Gabriel Colinacambie Access por PostgreSQL vengo de M$ SQL que a
decir verdad cuenta con un Transform y un Pivot
Table
Post by Gabriel Colinay un trabajo de DataWorkHouse facil de implementar
y
Post by Gabriel Colinano hay que modificar un contrib para obtener n
columnas.
Esta claro que hay algunas cosas que faltan en
Postgres, de lo contrario
yo no tendria nada que hacer. Pero trabajamos en
ello ... supongo que
si no tenemos PIVOT TABLE todavia es porque no ha
habido presion
suficiente de los usuarios. La siguiente pregunta,
entonces, seria: ¿es
PIVOT TABLE parte del estandar SQL? Si no lo es,
cual es el constructo
equivalente? Con eso ya podemos empezar a
aproximarnos a los hackers
para decir: "hey, falta esto, hagamoslo". Y si es
bueno, no te quepa
duda que alguien lo hara eventualmente (mas temprano
que tarde si es que
motivas a alguien para que lo haga, ya sea
convenciendole de lo util que
es o bien poniendo $$$).
Bien Alvaro, esto me pone contento, ya casi me mando
un unsuscribe por que no me bancaba lo que me parecia
algo arrogante, pero vamos bien y me quedo a dar
contribuciones entonces.
Resolvi algo en Pl/pgsql que hace algo similar al
PivotTable y en honor a la verdad las claves me la
dieron tu y Jaime, cuando andaban respondiendo sobre
el contrib de crosstab, el cual cuenta con dos
crosstab,1 crosstab2,1 crosstab3 y 1 crosstab4,
funciones que hacen tablas cartesianas, todas ellas
limitadas a la cantidad de columnas que sepas que va a
mostrar, puesto que apriori tenes que saber la
cantidad de datos diferentes que tiene la tabla para
los que van a formar las columnas.
Bueno yo cree contribm y contribn, me falta un poquito
de prolijidad para presentarlo, un poco a falta de
horas ya que eso lo hago desde las 23 en adelante
robandole horas al suenio. Pero creo que resuelve el
problema.
Tambien recuerdo haberte preguntado como se publica y
no encontre la respuesta, pero me parece esta una
buena oportunidad para que lo pongamos de nuevo en el
tapete.
Post by Alvaro HerreraTenias esa oportunidad cuando trabajabas con SQL
Server? OK, tenias
TRANSFORM pero si hubieras querido, no se, algo
tipico de Postgres como
por ej. la capacidad de hacer CREATE AGGREGATE,
habrias podido ir donde
el equipo de desarrollo a decirles "me gustaria
agregar tal cosa..."??
Si.
En mi caso, caso particular podia escalar a los
laboratios de Microsoft. Microsoft Uruguay esta aca
solo por la gente que da soporte a estas tecnologias.
Y hay tres empresas que ayudan desde aca al soporte de
America del Sur y America Latina, el grupo Expert y el
grupo de InfoCorp. con excelentes tecnicos capacitados
en "ciudad microsoft" como se conoce en la interna.
Pero no es el punto, por que mi partiuclaridad no
resuelve la de la sociedad ni de que el concepto del
Software Libre es un concepto mejor.
Post by Alvaro HerreraPost by Gabriel ColinaEl otro dia hablabas despectivamente de PHP,
refiriendote a una aplicacion, creo que PHP no es
de
Obviamente no todo lo malo viene de MS ;-) Mi
opinion personal de PHP
es bastante baja; habiendo sido un entusiasta, me
decepcionaron los
resultados que obtuve y hoy por hoy usaria otros
lenguajes.
Post by Gabriel ColinaDe todos modos comparto contigo con liberarnos de
M$,
Post by Gabriel Colinapero a esta altura se que por otros motivos,
puesto
Post by Gabriel Colinaque la gente con que me comunico normalmente,
respetan
Post by Gabriel Colinaa los tranochados, esos que con desprecio hace 14
anios vos te sentabas al lado,
Ja ja ja ... no, yo no me sentaba con desprecio al
lado de ellos. Me
acuerdo que varios de ellos preguntaban si desde VB
podia uno conectarse
a ODBC, y yo quedaba "marcando ocupado" porque no
sabia lo que era ODBC.
Si dije que eran trasnochados, es porque tenian
bastante cara de haber
estado trabajando todo el dia y el cansancio les
salia por los poros,
mientras que yo no tenia nada que hacer en todo el
dia. Y por otro
lado, mientras todos ellos tenian un motivo para
hacer el curso y cosas
con las que experimentar cuando llegaran a sus
trabajos, yo estaba ahi
solo para ver que podia sacar del curso.
Que suerte que decis eso, puesto que en mi
consideracion vos estas entre los mejores de Latam y
la linea de la genialidad y la soberbia es muy delgada
y la verdad que en vez de tratar de aportar, mi
proximo aporte seria unsuscribe, si entendia que aca
el intercambio era de forma clasista, por que
estariamos cambiando a M$ comercial, por Veleidad
personalista.
Ademas yo segui con la idea del encuentro de linux y
postgreSql y lo pantee en el foro de la gente de Linux
Uruguay, para ver de plantearle al gobierno y otras
instituciones aportaran infraestructura para hacer uno
aqui, justo donde M$ expone sus lanzamientos al
mercado.
La idea es invitar buenos exponentes de latam y pense
en gente como Alvaro, Jaime y algun otro de la lista,
y hacer un gran esfuerzo para que ustedes pudieran
venir y exponer.
Por Linux me gustaria tener a Gunnar y a alguien de
UTUTO.
Sinceramente ya he organizado eventos informaticos y
deportivos obteniendo apoyo del gobierno y no lo veo
dificil por la campania que el mismo esta haciendo de
Linux en Uruguay a nivel educativo.
Aprovecho que con este e-mail entendi tu espiritu y te
lo panteo.
Atte. Gabriel Colina
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/