FoxPro/Visual FoxPro - Ayuda con procedimientos Almacenados

   
Vista:

Ayuda con procedimientos Almacenados

Publicado por Arturo (8 intervenciones) el 26/09/2008 23:23:42
Saludos gente, quisiera acerles una consulta, tengo que hacer una trabajo de un programa de compras y ventas usando visual fox pro 9 y como motor de base de datos MySQL 5, usando procedimientos almacenados de mysql y para utilizar esos procedimientos debo llamarlos desde mi programa. Pero no se como. generalmente usop sentencias de este tipo para realizar las distintas operaciones.

[ok = sqlexec(conexion,'insert into Tabla(campo1,campo2,campo3)values(?variable1,?variable2,?variable3)]

OBS: ok es una variable de un odigo que conecta mi base de datos con visual por odbc.

lo que en esencia quiero es hacer lo mismo pero en el motor de base de datos y llamar la funcion en mi programa y que nada se realize ahy.

desde ya gracias espero su ayuda gente saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con procedimientos Almacenados

Publicado por Saul (El Guatemalteco...) (676 intervenciones) el 26/09/2008 23:33:11
Yo hago lo siguiete.

1.- En mi programa principal pongo esto.

PUBLIC cfd
cfd=CREATEOBJECT("custom")

cfd.AddProperty("_conexion", 1)

cfd.AddProperty("_cpass", "")
cfd.AddProperty("_cuser", "")

cfd.AddProperty("_cserver", "")
cfd.AddProperty("_cbase", "")

cFd.ADDPROPERTY("_dFechaActual", DATE())
ctexto=FILETOSTR(SYS(5)+CURDIR()+'Finger.txt')
STORE ctexto TO gcString
STORE '-' TO gcFindString
npos=AT(gcFindString,gcString)

cfd._cpass= "conta"
cfd._cuser= "conta"

cfd._cserver=SUBSTR(ctexto,1,npos-1)
cfd._cbase=SUBSTR(ctexto,npos+1)

cfd._conexion=conexion_Sql()

* Database connection
PUBLIC dbConnHandle AS "ADODB.Connection"

2.- en PRG aperte hago esto.

FUNCTION Conexion_sql()

LOCAL gnConnHandle
SQLSETPROP(0, "DispLogin", 3)
SQLSETPROP(0, "DispWarnings", .t.)
SQLSETPROP(0, "Asynchronous",.f.)

*- Desconectar Todas las conexiones abiertas
LnHandles = ASQLHANDLES(laHandles)
FOR n=1 TO lnHandles
SQLDISCONNECT (laHandles[n])
ENDFOR

gnConnHandle=SQLIDLEDISCONNECT(SQLSTRINGCONNECT("Driver={SQL Server};Server=(Local);Database=Master;UID=conta;PWD=conta"))

IF gnConnHandle<=0
oEspera.Release()
MESSAGEBOX("Imposible Realizar la Conexión de Red con el Servidor de Datos. (Comuníquese con El Administrador de Sistemas)",0+ 16, "Advertencia")
CLEAR EVENTS
ON SHUTDOWN
quit
ENDIF

IF gnConnHandle> 2
MESSAGEBOX("Se podrá presentar un error de conexión "+ ;
". Llame al programador para revisar este caso"+CHR(13)+ ;
"Conexiones abiertas hasta el momento suman : "+ ;
ALLTRIM(STR(cFd._conexion)),0+16, "Advertencia")
ENDIF
RETURN (gnConnHandle)

Procedure CapturaError()
Dimension aErrores(1)
Aerror(aErrores)
=Messagebox("Error en la conexión" + Chr(13) + Chr(10) + ;
Transform(aErrores(1)) + " - " + aErrores(2))
FOR ni=1 TO 2
SQLEXEC(cfd._conexion,"ROLLBACK")
ENDFOR
return
ENDPROC

3.- Hago mis consultas asi.

SQLEXEC(cfd._conexion,"select Rowid from clientes_huellas where cedula_cli=?thisform.txtcedula.value","curid")

SQLEXEC(cfd._conexion,"delete from clientes_huellas where cedula_cli=?thisform.txtcedula.Value")

IF 0 < SQLEXEC(cfd._conexion,"insert into clientes_huellas (cedula_cli,template) values (?ccedula,?ctpl)")
ELSE
capturaerror()
ENDIF



SUERTE .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con procedimientos Almacenados

Publicado por Arturo (8 intervenciones) el 26/09/2008 23:52:41
Gracias por la ayuda saul, creo que lo que tu haces es lo mismo que yo, aca les muestro lo que uso, un codigo de conexion a mi bdd utilizando un odbc.

PUBLIC conexion,ok
STORE 0 TO conexion,ok
conexion=SQLconnect('conectar')
IF conexion<0
=MESSAGEBOX("error de conexion",16)
ELSE
WAIT windows "Base de datos conectad.." timeout 1
ENDIF

el nombre de mi coneccion en el odbc es conectar, conexion es mi connectionHandle, y ok es la variable que uso para ejecutar mis consultas y demas cosas.

lo que yo quiero es en vez de hacer esto:

ok=SQLEXEC(conexion, 'select * from empleados order by emp_codigo', 'cboemple')

o esto
ok=SQLEXEC(conexion, 'update productos set stock_act=?v_cantstock where prd_codigo=?cursor_compra.c_codigo')

directamente hacerlo en el motor o sea en MySQL y solo llamarlo mas o menos como una funcion en mi programas, segun dicen es mas rapido.
es como por ejemplo tengo mi programa principal Main()y llamar a otros subprogramas que hagan siertas funciones pero no en el principal.

creo que es en vfp9 usando metodos tipos Call () y en MySQl usar Stored Procedures, y llamarlos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda con procedimientos Almacenados

Publicado por Saul (El Guatemalteco...) (676 intervenciones) el 27/09/2008 21:15:22
Pero que quieres hacer tu..

Lo uptdates, y los insert o solo hacer consultas.

porque de igual manera alli en www.portalfox.com hay una rutina que te convierte una vista remota en editable.

y puedes grabar, borrar Etc. sin tener que hacer los STP.

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar