gonzal...@hotmail.com
unread,Dec 30, 2012, 5:31:55 PM12/30/12Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to publice...@googlegroups.com
Estimados colegas:
Para quienes estan interesados en introducirse
o meterle el diente a las aplicaciones VFP usando BD PostgreSQL, les
envio este pequeño ejemplo que sirve para crear una base de datos, unas
tablas como parte de esa base de datos y unos datos adicionados a esas
tablas. el programita acepta un parametro c que es el nombre de la base
de datos. El interes es crear un subgrupo para compartir conocimientos
sobre el uso de VFP+Postgresql.
Saludos
parameters c
local nHandle,nset,lcStringCnxLocal,comando,cad
lcStringCnxLocal = "DRIVER={postgreSQL ODBC Driver(ANSI)};" + ;
"SERVER=localhost;" + ;
"DATABASE=postgres;"+;
"UID=postgres;" + ;
"PWD=root;"
cad = "DRIVER={postgreSQL ODBC Driver(ANSI)};" + ;
"SERVER=localhost;" + ;
"DATABASE="+lower(alltrim(c))+";"+;
"UID=postgres;" + ;
"PWD=root;"
SQLSETPROP(0,"DispLogin" , 3 )
nhandle = SQLSTRINGCONNECT(lcStringCnxLocal)
IF !(nhandle > 0)
AERROR(laErr)
MESSAGEBOX("No se pudo conectar a poistgreSQL. Error: " + CHR(13) + laErr[2])
else
sqlexec(nHandle,'DROP DATABASE IF EXISTS '+alltrim(c))
sqlexec(nHandle,'CREATE DATABASE '+lower(alltrim(c))) &&+' OWNER postgres')
sqldisconn(nHandle)
SQLSETPROP(0,"DispLogin" , 3 )
nhandle = SQLSTRINGCONNECT(cad)
endif
if nhandle>0
text to comando noshow pretext 10
create table productos (
parte varchar(20),
tipo varchar(20),
especificacion varchar(20),
psugerido float(6),
clave serial,
primary key(clave)
)
endtext
sqlexec(nHandle,comando)
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('Procesador','2 GHz','32 bits',null)")
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('Procesador','2.4 GHz','32 bits','35')")
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('Procesador','1.7 GHz','64 bits',205)")
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('Procesador','3 GHz','64 bits',560)")
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('RAM','128MB','333 MHz',10)")
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('RAM','256MB','400 MHz',35)")
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('Disco Duro','80 GB','7200 rpm',60)")
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('Disco Duro','120 GB','7200 rpm',78)")
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('Disco Duro','200 GB','7200 rpm',110)")
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('Disco Duro','40 GB','4200 rpm',null)")
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('Monitor','1024x876','75 Hz',80)")
sqlexec(nHandle,"insert into productos (parte,tipo,especificacion,psugerido) values ('Monitor','1024x876','60 Hz',67)")
text to comando noshow pretext 10
create table proveedores (
empresa varchar(20) not null,
credito bool,
efectivo bool,
primary key (empresa)
)
endtext
sqlexec(nHandle,comando)
sqlexec(nHandle,"insert into proveedores (empresa,efectivo) values ('Tecno-k',TRUE)") &&
sqlexec(nHandle,"insert into proveedores (empresa,credito) values ('Patito',TRUE)") &&
sqlexec(nHandle,"insert into proveedores (empresa,credito,efectivo) values ('Nacional',TRUE,TRUE )") &&
text to comando noshow pretext 10
create table ganancia(
venta varchar(16),
factor decimal (4,2),
primary key (venta)
)
endtext
sqlexec(nHandle,comando)
sqlexec(nHandle,"insert into ganancia values('Al por mayor','1.05')")
sqlexec(nHandle,"insert into ganancia values('Al por menor','1.12')")
text to comando noshow pretext 10
create table precios (
empresa varchar(20) not null,
clave int not null,
precio float(6),
orden serial,
primary key (orden),
foreign key (empresa) references proveedores MATCH FULL ON DELETE CASCADE ON UPDATE CASCADE,
foreign key (clave) references productos
)
endtext
sqlexec(nHandle,comando)
sqlexec(nHandle,"alter table precios SET ( autovacuum_enabled=true)")
sqlexec(nHandle,"insert into precios values ('Nacional',1,'30.82')")
sqlexec(nHandle,"insert into precios values ('Nacional',2,'32.73')")
sqlexec(nHandle,"insert into precios values ('Nacional',3,'202.25')")
sqlexec(nHandle,"insert into precios values ('Nacional',5,'9.76')")
sqlexec(nHandle,"insert into precios values ('Nacional',6,'31.52')")
sqlexec(nHandle,"insert into precios values ('Nacional',7,'58.41')")
sqlexec(nHandle,"insert into precios values ('Nacional',10,'64.38')")
sqlexec(nHandle,"insert into precios values ('Patito',1,'30.40')")
sqlexec(nHandle,"insert into precios values ('Patito',2,'33.63')")
sqlexec(nHandle,"insert into precios values ('Patito',3,'195.59')")
sqlexec(nHandle,"insert into precios values ('Patito',5,'9.78')")
sqlexec(nHandle,"insert into precios values ('Patito',6,'32.44')")
sqlexec(nHandle,"insert into precios values ('Patito',7,'59.99')")
sqlexec(nHandle,"insert into precios values ('Patito',10,'62.02')")
sqlexec(nHandle,"insert into precios values ('Tecno-k',3,'198.34')")
sqlexec(nHandle,"insert into precios values ('Tecno-k',5,'9.27')")
sqlexec(nHandle,"insert into precios values ('Tecno-k',6,'34.85')")
sqlexec(nHandle,"insert into precios values ('Tecno-k',7,'59.95')")
sqlexec(nHandle,"insert into precios values ('Tecno-k',10,'61.22')")
sqlexec(nHandle,"insert into precios values ('Tecno-k',12,'62.29')")
sqldisconn(nHandle)
else
wait window "no pudo crear base de datos ni mierda"
endif