Conectar VFP9 a Firebird 2.5 usando strings

1,120 views
Skip to first unread message

Fox Learner *

unread,
Jun 7, 2012, 9:50:03 AM6/7/12
to Comunidad de Visual Foxpro en Español
Por qué no me sale la conexion con strings hacia firebird?...

Estoy usando esto:

lcCadenaConexion = "DRIVER=  {" + Firebird/InterBase(r) driver + "};" ; 
                       + "USER=     " + ADMIN001 + ";" ; 
                       + "PASSWORD= " + 123456 + ";" ; 
                      * + "ROLE=     " +  + ";" ; 
                      
                       + "DATABASE= " + C:\Archivos de programa\Firebird\Firebird_2_5\examples\empbuild\Employee.fdb + ";" ; 
                       + "OPTIONS= 131329;" 
      lnHandle = SQLStringConnect(lcCadenaConexion) 
      
      
      if lnHandle<0 
  messagebox("Error",16,"ADVERTENCIA") 
endif 
WAIT WINDOW 'FASE DE CONEXION TERMINADA' TIMEOUT 1 

mconsulta=SQLEXEC(lnHandle,'SELECT * FROM CUSTOMER','Ccustomer') 
if mconsulta<0 
  messagebox("Error",16,"ADVERTENCIA") 
endif 
sele Ccustomer 
browse 
      
El nombre del driver parece ser el correcto. Qué esta mal?...

Gracias anticipadas a los colaboradores!      
      
  
DRIVER FB.JPG

Intel Man

unread,
Jun 7, 2012, 10:01:18 AM6/7/12
to publice...@googlegroups.com
Hola,  tienes que ver que error te da con esto:

 
if lnHandle<0 
  mm=aerror(aa)
  messagebox("Error: "+aa(2),16,"ADVERTENCIA")
endif

Si no nos das el error que te da, no se te puede ayudar mucho.

Saludos.



Date: Thu, 7 Jun 2012 08:50:03 -0500
Subject: [vfp] Conectar VFP9 a Firebird 2.5 usando strings
From: thenewin...@gmail.com
To: publice...@googlegroups.com

Walter R. Ojeda Valiente

unread,
Jun 7, 2012, 10:25:48 AM6/7/12
to publice...@googlegroups.com
Tu error es que estás tratando como variables a lo que deben ser constantes, por ejemplo:

Firebird/Interbase(r) driver

es una constante y tú la tratas como si fuera una variable. Además, estás concatenando un string con un número (123456) lo cual no es admitido en VFP. Como tampoco es admitido que coloques dos signos de suma, uno seguido del otro.

Lo correcto sería lo siguiente:

      lcCadenaConexion = "DRIVER=  {Firebird/Interbase(r) driver};" ;
                       + "USER=     " + lcUsuario + ";" ;
                       + "PASSWORD= " + lcContrasena + ";" ;
                       + "ROLE=     " + lcRol + ";" ;
                       + "DATABASE= " + lcBaseDatos + ";" ;
                       + "OPTIONS= 131329;"

Saludos.

Walter.




Date: Thu, 7 Jun 2012 08:50:03 -0500
Subject: [vfp] Conectar VFP9 a Firebird 2.5 usando strings
From: thenewin...@gmail.com
To: publice...@googlegroups.com

mapner

unread,
Jun 7, 2012, 5:35:11 PM6/7/12
to Comunidad de Visual Foxpro en Español
Puedes algo así:

****

m.cUsr = "SYSDBA"
m.cPwd = "masterkey"
cBD = "192.168.1.10:c:\bd\MyDb.FDB"

TEXT TO cStr TEXTMERGE NOSHOW
Driver=Firebird/InterBase(r) driver;Uid=<<m.cUsr>>;Pwd=<<m.cPwd>>;
DbName=<<cBD>>;
ENDTEXT

nCn = SQLSTRINGCONNECT(cStr)
IF nCn < 0
AERROR(aAError)
MESSAGEBOX('No se pudo conectar '+aAError[2],64,"Atención")
ENDIF

nRet = SQLExec(nCn,'SELECT * FROM CLIENTES","CLI")
IF nRET < 0
AERROR(aAError)
MESSAGEBOX('No se pudo ejecutar consulta '+aAError[2],64,"Atención")
ENDIF


****
* saludos
>  DRIVER FB.JPG
> 97 KVerDescargar

Fox Learner *

unread,
Jun 8, 2012, 9:25:41 AM6/8/12
to publice...@googlegroups.com
Gracias por toda la ayuda compañeros. Ya carga los datos a un cursor de esta forma:

lcCadenaConexion = "DRIVER={Firebird/Interbase(r) driver};" ; 
                       + "USER=     " + "ADMIN001" + ";" ; 
                       + "PASSWORD= " + "123456" + ";" ;                                      
                       + "DATABASE= " + "C:\Archivos de programa\Firebird\Firebird_2_5\examples\empbuild\Employee.fdb" + ";" ; 
                       + "OPTIONS= 131329;" 
      lnHandle = SQLStringConnect(lcCadenaConexion)    
      
      if lnHandle<0 
  messagebox("Error",16,"ADVERTENCIA") 
endif 
WAIT WINDOW 'FASE DE CONEXION TERMINADA' TIMEOUT 1 

mconsulta=SQLEXEC(lnHandle,'SELECT * FROM CUSTOMER','Ccustomer') 
if mconsulta<0 
  messagebox("Error",16,"ADVERTENCIA") 
endif 
sele Ccustomer 
browse 
  
No sé la razon, pero además de lo que comentó Walter acerca de que el nombre del driver es una constante, los espacios y las lineas vacias o comentadas parecer afectar la formación del string.

Por ejemplo en esta linea: "DATABASE= "   Si lo pongo así "DATABASE=" (Quitandole un espacio despues del signo de igual) me marcaba "Sintaxis de verbo no reconocido".

Esto es muy básico, pero me sirve para entender la idea detrás de todo esto.

Gracias a todos por la ayuda. Espero seguir avanzando hacia trabajar de forma mas profesional tanto con fox como con firebird.

Saludos!
Reply all
Reply to author
Forward
0 new messages