From: | HERMES ZAMBRA <hermeszambra(at)yahoo(dot)com> |
---|---|
To: | María Lorena Culzoni Estigarribia <lorenaculzoni_2(at)hotmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Hola Lista |
Date: | 2007-04-22 00:59:15 |
Message-ID: | 190988.97772.qm@web63714.mail.re1.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
--- María Lorena Culzoni Estigarribia
<lorenaculzoni_2(at)hotmail(dot)com> escribió:
---------------------------------
Tengo una duda que me quiero sacar de encima: Uso
postgresql 8.1 y visual basic 6.0 los datos estiro
mediante ODBC y funciona perfectamente ahora bien; yo
necesito hacer un select, que lo hago dentro del
objeto dataenvironmet, este select es especial porque
solicita un parámetro y lo hago de la siguiente
manera:
SELECT c.descripcion, ac.max_integrante FROM cargo c,
area_cargo ac WHERE c.id_cargo = ac.id_cargo AND
ac.id_area = ?
Este select me estira los datos perfectamente pero no
me acepta el parámetro. Mi pregunta es si es valido
esto para postgresql o tiene otra forma de hacerlo?
Desde ya muchas gracias por su tiempo y ayuda
Efectivamente tiene otras dos formas de hacerlo que a
mi me quedaron comodas.
Antes de pasartelas quiero decirte que los foros, chat
y otros tienen algo llamado netetiq que hay que
respetar, pero hay gente que piensa que tenes que
nacer sabiendolo y la verdad son bastante pedante esta
gente, normalmente no son lo que aportan sustancia a
la lista, te pido disculpas por ellos y me adhiero a
Guido, el senior Guillermo no puede hablar por la
lista. A mi me paso ya esto por que venia de trabajar
con Microsoft y consultar la technet y no tenia idea
de la netetiq esta y buen me fue guiando buena gente y
mi interes tambien. a Guillermo le voy a contestar en
otro mail.
Mi nombre es Gabriel Hermes Colina Zambra y tuve que
cambiar el mail y el nombre para que algunos me
dejaran tranquilo con esto.
Estos ejemplos solo para emplearlos con recordeset con
insert, delete y updete es muy facil y directo.
Vamos a visual y el dataenviroment.
Caso uno, con la consulta. no es el que mas aplico me
gusta mas la solucion dos que te voy a pasar.
Siempre la consulta la grabo en un view sin el where,
para llamarla con el where desde el dataenviroment,
pero no es exluyente
esto en el dataenviroment llamado dataenv para el
ejemplo
Agregas un comando llamado por ejemplo sqlcmdconsulta,
SELECT c.descripcion, ac.max_integrante FROM cargo c,
area_cargo ac WHERE c.id_cargo = ac.id_cargo AND
ac.id_area = -1
Esto lo asocias a los controles que te parezcan o no.
If Dataenv.rssqlcmdconsulta.State = 1 Then
Dataenv.rssqlcmdconsulta.Close
Dataenv.sqlcmdconsulta.Source = "SELECT c.descripcion,
ac.max_integrante FROM cargo c, area_cargo ac WHERE
c.id_cargo = ac.id_cargo AND ac.id_area = " &
nvariable
Dataenv.rssqlcmdconsulta.Open
aca un ejemplo para enlazarlo con un adodatagrid
Set DataGridcargos.DataSource = Dataenv
Datacargos.DataMember = "sqlcmdconsulta"
Caso 2, te lo pongo con un ejemplo real.
Hagamos un view en PostgreSQL igual que lo harias en
Mssql o Access para todos los registos.
SELECT c.descripcion, ac.max_integrante FROM cargo c,
area_cargo ac
llamemoslo viewcargos
Ahora vamos hacer una funcion con lenguaje sql
la vamos a llamar fnc_viewcargos
CREATE OR REPLACE FUNCTION "fnc_viewcargos" (npar1
integer,npar2 integer) RETURNS SETOF "viewcargos" AS
$body$
select * from viewcargos WHERE c.id_cargo = npar1 AND
ac.id_area = npar2
$body$
LANGUAGE 'sql' VOLATILE CALLED ON NULL INPUT SECURITY
INVOKER;
si npar1 y npar 2 en el where no te funciona,
sustituilo solo en el where por $1 y pesos $2 segun el
orden de variable.
Pasemos a visual que es facil llamar a esta funcion y
te devuelva los recordset.
Lo bueno con el primer caso es que un view con reglas
puede ser actualizable desde visual, con funcion es
mas rapido y facil pero me ha costado actualizar
registros enlazados en un grid de esta forma, o sea
hay que programar un poco mas.
aca desde visual ejemplo 2
El dataenviroment se llama Dataenv
El comando sqlcmdconsulta y contiene
select * from fnc_viewcargos(0,0) asi no te trae
ningun registro sin parametros
If dataenv.rssqlcmdconsulta.State = 1 Then
dataenv.rssqlcmdconsulta.Close
dataenv.rssqlcmdconsulta.Source = "select * from
fnc_viewcargos('" & nVariable1 & "','" & nVariable2 &
")"
dataenv.rssqlcmdconsulta.Open
otra ves lo enlazamos a una grilla o no
DataGricargos.DataMember = "sqlcmdconsulta"
dataenv.rssqlcmdconsulta.Close
Bueno espero que esto te sirva de guia y puedas
resolver.
Perdona la intelorancia de algunos colegas, pero
recorda antes de preguntar la proxima ves leete la
netetiq.
En ella vas a encontrar cosas como no mandar html en
el correo, si no en modo texto, por que no todos
trabajan con html, contestar siempre al final para que
el hilo "theread" se pueda seguir con comodida, y un
asunto que nos guie sobre lo que vamos a contestar.
Mi Msn ghcolina.com
Mi nombre Gabriel Hermes Colina Zambra
antes colina_movil,ahora Hermes Zambra.
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 | HERMES ZAMBRA | 2007-04-22 01:24:12 | Re: Hola Lista |
Previous Message | Alvaro Herrera | 2007-04-22 00:35:43 | Re: Copmpilar libpq + threads |