¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?

1,169 views
Skip to first unread message

TheNewInquirer

unread,
Mar 9, 2012, 4:16:01 PM3/9/12
to Comunidad de Visual Foxpro en Español
Bueno, ya hice lo siguiente:

*Instalar el Firebird 2.5
*Instalar el driver ODBC para firebird
*Iniciar el servicio de Firebird y el guardian (en panel de control/
herr. admivas/servicios)
*Cambiar la contraseña del usuario SYSDBA
*Crear un usuario adicional al administrador
*Conectar la herramienta visual SQL Manager Lite for Interbase &
Firebird
*Crear una conexion DNS con el nombre FIRE en panel de control/
herramientas admivas/origenes de datos odbc/DNS de sistema


Ahora bien, entro al fox y le doy la siguiente linea en la ventana de
comandos:

SQLConnect("FIRE", "ADMIN001","secret" )

No me marca ningun error, por lo que supongo que la conexion ya esta
hecha.

Como puedo desde fox ver/usar la base de datos de ejemplo que esta en:

C:\Archivos de programa\Firebird\Firebird_2_5\examples\empbuild
\employee.FDB

Con SQLEXEC( ) ??

Estoy bien, o ando de plano perdido?.. Nunca antes he hecho una
conexion usando ODBC, aunque si he usado el MySql front y el Navicat y
el phpmyadmin para PHP, pero usando Dreamweaver.

Aclaro que no puedo usar las clases de Walter porque no pude
descargarlas en el work porque el firewall corporativo me bloquea las
paginas de descarga.

Saludos!

TheNewInquirer

unread,
Mar 9, 2012, 4:20:24 PM3/9/12
to Comunidad de Visual Foxpro en Español
No sé mucho de OOP, por cierto, por si me iban a decir que copie y
pegue el código de las clases visuales..jeje

Intel Man

unread,
Mar 9, 2012, 4:47:27 PM3/9/12
to publice...@googlegroups.com
Hola, para verificar si la conexion se hizo tienes que hacer lo siguiente:

tuconexion=SQLConnect("FIRE", "ADMIN001","secret" )

if tuconexion<0
  =messagebox("Error",16,"ADVERTENCIA"
endif

Ahora si tu conexion se hizo puedes consultar tu base de datos:

mconsulta=sqle(tuconexion,"select * from tu_tabla","tucursor")
if mconsulta<0
  =messagebox("Error",16,"ADVERTENCIA"
endif

sele tucursor
brow

Saludos




> Date: Fri, 9 Mar 2012 13:16:01 -0800
> Subject: [vfp] ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
> From: thenewin...@gmail.com
> To: publice...@googlegroups.com

TheNewInquirer

unread,
Mar 9, 2012, 4:59:37 PM3/9/12
to Comunidad de Visual Foxpro en Español
En from tu_tabla pondría la ruta?? o tal vez ya no es necesario..

mapner

unread,
Mar 9, 2012, 6:10:04 PM3/9/12
to Comunidad de Visual Foxpro en Español
Amigo,

Creo que te conviene estudiar Cliente Servidor con VFP y luego si
plantear dudas al respecto en el foro.

Acá te dejo un link:.

http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=25

Saludos


TheNewInquirer ha escrito:

Víctor Hugo Espínola Domínguez

unread,
Mar 9, 2012, 8:21:54 PM3/9/12
to publice...@googlegroups.com
Hola NewInquirer

Sólo el nombre de la tabla. La ruta ya la especificaste al definir FIRE en el ODBC.

Saludos, Víctor.

Walter R. Ojeda Valiente

unread,
Mar 10, 2012, 10:01:21 PM3/10/12
to publice...@googlegroups.com
A tu Base de Datos puedes conectarte con DNS o sin DNS. Si te conectas sin DNS entonces no es necesario que vayas al Panel de Control, Herramientas administrativas, Orígenes de datos ODBC, DNS de sistema.

Inclusive, lo recomendable suele ser conectarse sin DNS, aunque es una cuestión mayormente de gustos.

Cuando te conectas, debes guardar el resultado en una variable que usarás en lo sucesivo para comunicarte con esa Base de Datos.

Y si en tu trabajo no puedes descargar, ¿por qué no descargas desde otra computadora?

Saludos.

Walter.



> Date: Fri, 9 Mar 2012 13:16:01 -0800
> Subject: [vfp] ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
> From: thenewin...@gmail.com
> To: publice...@googlegroups.com
>

Fox Learner

unread,
Apr 3, 2012, 12:32:39 PM4/3/12
to Comunidad de Visual Foxpro en Español
Maestros del Fox,

Les comento que ya pude hacer la conexión a la tabla Customer que
viene como ejemplo en la Base de Datos EMPLOYEE en el directorio
explamples\empbuild de Firebird 2.5.

Usando una conexion DSN de nombre FIRE, como sigue:

*Visualiza.PRG

resultado=SQLConnect("FIRE", "ADMIN001","secret" ) if resultado<0  
=messagebox("Error",16,"ADVERTENCIA") endif
WAIT WINDOW 'FASE DE CONEXION TERMINADA' TIMEOUT 1
mconsulta=SQLEXEC(resultado,'SELECT * FROM CUSTOMER','Ccustomer')
if mconsulta<0   messagebox("Error",16,"ADVERTENCIA") endif sele
Ccustomerbrowse
************

Lo estoy haciendo "manualmente", sin usar las clases de Walter con el
fin de "captar" de que se trata todo esto.

Ahora, como le haría para conectarme sin DSN mediante strings?...


Saludos!



On 9 mar, 16:16, TheNewInquirer <thenewinquire...@gmail.com> wrote:
> Bueno, ya hice lo siguiente:
>
> *Instalar elFirebird2.5
> *Instalar el driver ODBC parafirebird
> *Iniciar el servicio deFirebirdy el guardian (en panel de control/
> herr. admivas/servicios)
> *Cambiar la contraseña del usuario SYSDBA
> *Crear un usuario adicional al administrador
> *Conectarla herramienta visual SQL Manager Lite for Interbase &Firebird

Fox Learner

unread,
Apr 3, 2012, 12:37:31 PM4/3/12
to Comunidad de Visual Foxpro en Español
No se ve bien antes.

* Visualiza.prg

resultado=SQLConnect("FIRE", "ADMIN001","123456" ) if resultado<0  
=messagebox("Error",16,"ADVERTENCIA") endif
WAIT WINDOW 'FASE DE CONEXION TERMINADA' TIMEOUT 1
mconsulta=SQLEXEC(resultado,'SELECT * FROM CUSTOMER','Ccustomer')
if mconsulta<0   messagebox("Error",16,"ADVERTENCIA") endif sele
Ccustomerbrowse


Como se haría, pero ya no con DSN, sino usando strings?..

Saludos!

TheNewInquirer --

unread,
Apr 3, 2012, 12:39:33 PM4/3/12
to Comunidad de Visual Foxpro en Español
Mejor desde el gmail, ya que por alguna razon no se ve bien:

* Visualiza.prg
.
resultado=SQLConnect("FIRE", "ADMIN001","123456" ) 
if resultado<0 
  =messagebox("Error",16,"ADVERTENCIA") 
endif 

WAIT WINDOW 'FASE DE CONEXION TERMINADA' TIMEOUT 1

mconsulta=SQLEXEC(resultado,'SELECT * FROM CUSTOMER','Ccustomer') 

if mconsulta<0 
  messagebox("Error",16,"ADVERTENCIA") 
endif 
sele Ccustomer
browse

******

Walter R. Ojeda Valiente

unread,
Apr 3, 2012, 7:18:41 PM4/3/12
to publice...@googlegroups.com
      lcCadenaConexion = "DRIVER=  {" + lcODBC_Driver + "};" ;
                       + "USER=     " + lcUsuario + ";" ;
                       + "PASSWORD= " + lcContrasena + ";" ;
                       + "ROLE=     " + lcRol + ";" ;
                       + "DATABASE= " + lcBaseDatos + ";" ;
                       + "OPTIONS= 131329;"

      lnHandle = SQLStringConnect(lcCadenaConexion)

En lcODBC_Driver debes tener el nombre del driver que usarás para la conexión.

lcUsuario, el nombre de un usuario de la Base de Datos

lcContrasena, la contraseña de ese usuario

lcRol, el nombre del rol de ese usuario (si tiene un rol, claro)

lcBaseDatos, el nombre de la Base de Datos a la cual te conectarás, o su alias si lo has especificado en el archivo ALIASES.CONF

Saludos.

Walter.




















> Date: Tue, 3 Apr 2012 09:32:39 -0700
> Subject: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
> From: thenewin...@gmail.com
> To: publice...@googlegroups.com
>

Fox Learner

unread,
Apr 3, 2012, 10:56:10 PM4/3/12
to Comunidad de Visual Foxpro en Español
Ok. Reviso.. Aun estoy leyendo sobre lo de asignar roles y otorgar
permisos con grant, ya que me marcaba error al hacer selects.

Al parecer es porque no había asignado los permisos al usuario para
hacer selects, inserts, updates, etc.

Gracias!

Walter R. Ojeda Valiente

unread,
Apr 3, 2012, 11:00:49 PM4/3/12
to publice...@googlegroups.com
El usuario principal o SYSDBA tiene todos los derechos sobre todas las Bases de Datos.

El creador de una Base de Datos tiene todos los derechos sobre esa Base de Datos.

Los demás usuarios no tienen derechos sobre ninguna Base de Datos .... hasta que esos derechos les sean otorgados explicitamente por SYSDBA o por el creador.

Para asignarles los mismos derechos a varios usuarios se utilizan los roles. Un usuario puede tener varios roles, pero cuando se conecta a una Base de Datos solamente uno de esos roles puede estar activo.

Saludos.

Walter.




> Date: Tue, 3 Apr 2012 19:56:10 -0700

> Subject: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
> From: thenewin...@gmail.com
> To: publice...@googlegroups.com
>

Fox Learner

unread,
Apr 3, 2012, 11:14:22 PM4/3/12
to Comunidad de Visual Foxpro en Español
Ok. Si, ese debe ser el problema, ya que estoy usando el usuario
ADMIN001 creado por SYSDBA. Solo falta otorgar derechos o crear un
role y pasarle los derechos del rol al usuario.

Ai la llevo.. Solo tengo que leer bien el manual que elaboraste, ahi
esta bien claro.

Gracias!

Walter R. Ojeda Valiente

unread,
Apr 3, 2012, 11:19:17 PM4/3/12
to publice...@googlegroups.com
Recuerda que siempre lo aconsejable es que el usuario SYSDBA no realice operaciones en la Base de Datos (insertar, eliminar, actualizar, consultar, crear, borrar, etc.) sino que esas operaciones sean realizadas por los usuarios comunes, ya que así se los puede controlar muy bien.

Saludos.

Walter.




> Date: Tue, 3 Apr 2012 20:14:22 -0700

> Subject: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
> From: thenewin...@gmail.com
> To: publice...@googlegroups.com
>

Walter R. Ojeda Valiente

unread,
Apr 3, 2012, 11:39:21 PM4/3/12
to publice...@googlegroups.com
Gracias por el comentario, pero eso no ocurrirá ya que la filosofía de todos quienes están en el proyecto es que siempre sea Open Source y gratis.

Saludos.

Walter.




> Date: Tue, 3 Apr 2012 20:37:34 -0700

> Subject: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
> From: thenewin...@gmail.com
> To: publice...@googlegroups.com
>
> Ok. Gracias por los tips! La harías bien como consultor del Firebird,
> cuando una empresa como Oracle la adquiera.
>
> Saludos!

Fox Learner

unread,
Apr 3, 2012, 11:37:34 PM4/3/12
to Comunidad de Visual Foxpro en Español

ArilSoft

unread,
Apr 4, 2012, 9:18:48 AM4/4/12
to publice...@googlegroups.com
Estimado

Buscando en el grupo existe material para poder bajar sobre la interaccion excelente entre Vfp y Firebird, esta hecho por Walter Ojeda e incluso con una mini aplicacion sin costo

Si le das en busqueda podras encontrar no tengo los enlaces a la mano

Arilsoft

Julio Cesar Vente Ruiz

unread,
Apr 5, 2012, 10:35:24 AM4/5/12
to publice...@googlegroups.com
Saludos, soy nuevo con Firebird y tengo muchas preguntas.
Walter, en la cadena de conexion ODBC donde se especifica la IP o el nombre del servidor que tiene la DB de Firebird....?

Gracias de antemano...   
--


Julio Cesar Vente Ruiz

Walter R. Ojeda Valiente

unread,
Apr 5, 2012, 10:44:11 AM4/5/12
to publice...@googlegroups.com
Hola Julio César

Antes del nombre de la Base de Datos escribes la IP del Servidor. Ejemplos:

7.52.152.222:C:\SISTEMAS\AGENDA.FDB

MyServer:C:\SISTEMAS\AGENDA.FDB     

7.52.152.222:AGENDA

MyServer:AGENDA

MyServer:MiBaseDatos

Yo prefiero la última alternativa porque así ningún curioso podrá tener la menor idea de donde se encuentra la Base de Datos ni cual es su nombre real.

Saludos.

Walter.




Date: Thu, 5 Apr 2012 09:35:24 -0500
Subject: Re: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
From: jvent...@gmail.com
To: publice...@googlegroups.com

Walter R. Ojeda Valiente

unread,
Apr 5, 2012, 10:47:20 AM4/5/12
to publice...@googlegroups.com
Ah, me faltó aclarar algo, también podrías escribir:

MyServer/gds_db:AGENDA

\\MyServer\C:\SISTEMAS\AGENDA.FDB

\\MyServer@gds_db\C:\SISTEMAS\AGENDA.FDB

Como ves, hay muchas alternativas, todas funcionan bien, es cuestión de que elijas la que te resulte más conveniente.

Saludos.

Walter.




From: wr...@hotmail.com
To: publice...@googlegroups.com
Subject: RE: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
Date: Thu, 5 Apr 2012 14:44:11 +0000

Daniel Sánchez

unread,
Apr 5, 2012, 3:00:47 PM4/5/12
to publice...@googlegroups.com
Pero según lo que siempre aconsejas Walter y por seguridad la primera opción osea esta

MyServer/gds_db:AGENDA 

es la más apropiada ya que no divulga donde se encuentra el archivo de BD.

Saludos

--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú

Walter R. Ojeda Valiente

unread,
Apr 5, 2012, 5:21:12 PM4/5/12
to publice...@googlegroups.com
O simplemente:

MyServer:AGENDA

o para complicarle aún más la vida al curioso:

MyServer:MiBuenaBaseDatos

MiEsposa:MiNovia

Cuanto menos pueda saber el fulano, mucho mejor para la seguridad.

Saludos.

Walter.





Date: Thu, 5 Apr 2012 14:00:47 -0500

Subject: Re: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?

sip...@gmail.com

unread,
Apr 5, 2012, 7:03:49 PM4/5/12
to publice...@googlegroups.com
Para lograr llamar la base de datos por un alias debes configurar el archivo de alias. de firebird indicando la ruta de tu base de datos y podrás llamarlos como dice walter

MyServer:AGENDA

Enviado desde mi BlackBerry de Movistar

From: "Walter R. Ojeda Valiente" <wr...@hotmail.com>
Date: Thu, 5 Apr 2012 21:21:12 +0000
Subject: RE: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?

Walter R. Ojeda Valiente

unread,
Apr 5, 2012, 7:08:19 PM4/5/12
to publice...@googlegroups.com
Es cierto, el archivo se llama ALIASES.CONF y se encuentra en la carpeta donde instalaste el Firebird, por ejemplo en: C:\Archivos de Programa\Firebird\Firebird_2_5\ la cual por supuesto NO DEBE estar compartida.

Desde mi punto de vista es muy recomendable utilizar un alias, para dificultarle la vida a los posibles curiosos.

Saludos.

Walter.





Subject: Re: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
To: publice...@googlegroups.com
From: sip...@gmail.com
Date: Thu, 5 Apr 2012 23:03:49 +0000

Julio Cesar Vente Ruiz

unread,
Apr 5, 2012, 11:37:27 PM4/5/12
to publice...@googlegroups.com
Que pena con ustedes señores pero he probado todo lo que me dicen y aun asi no consigo conectarme a la base de datos desde el VFP:
Comparto lo que hago con ustedes esperando me puedan ayudar a detectar donde esta el error que estoy cometiendo.

lcCadenaConexion = "DRIVER={Firebird/InterBase(r) driver};" ;
                       + "USER=SYSDBA;" ;
                       + "PASSWORD=voyager;" ;
                       + "ROLE=;" ;
                       + "DATABASE=192.168.27.101:C:\DBFB\PRUEBA.FDB;" ;
                       + "OPTIONS=131329;"

lnHandle = SQLStringConnect(lcCadenaConexion)
     
? lnHandle

El handle siempre me da -1 lo que tengo entendido quiere decir que no logra conectarse..
Tengo un equipo que hace de servidor con Windows XP Pro SP3 y otro igual que es donde tengo el VFP con el ODBC de Firebird instalado.

Les agradesco enormemente la ayuda que me puedan dar.

Julio Cesar Vente Ruiz

unread,
Apr 5, 2012, 11:52:09 PM4/5/12
to publice...@googlegroups.com
Hola Ya esta resuelto, resulta que me faltaba el archivo fbclient.dll, lo he copiado en system32 y ahora si me puedo conectar a la DB.
Gracias...  voy a diertirme un rato... (a mi esposa no la va a gustar, pero ni modo, ja ja )

Fox Learner

unread,
Apr 6, 2012, 1:34:09 AM4/6/12
to Comunidad de Visual Foxpro en Español
Tambien recuerda poner el servicio de firebird como automatico. De lo
contrario no podras conectarte aunque tu string de conexion este
correcto, ni podras ver los datos con tu herramienta visual como el
SQL MANAGER LITE.

Saludos!

ZeRoberto

unread,
Apr 6, 2012, 3:47:08 PM4/6/12
to publice...@googlegroups.com
Porque no te conectas via DSN, ahi haces el testeo, no necesitas cambiar nada en el programa. solo las DSN
 
Saludos

Juan Bonilla

unread,
Jul 3, 2012, 7:58:28 PM7/3/12
to publice...@googlegroups.com
disculpen q retome este tema pero estoy empezando a hecr pininos con firebird..

walter .. especificaste algunas formas de conectar a firebird

MyServer/gds_db:AGENDA
\\MyServer\C:\SISTEMAS\AGENDA.FDB
\\MyServer@gds_db\C:\SISTEMAS\AGENDA.FDB

que diferencia en funcionamiento o seguridad puede tener el uso del gds_db, no entiendo cual es la funcion..

gracias..







El jueves, 5 de abril de 2012 09:47:20 UTC-5, Walter R. Ojeda Valiente escribió:
Ah, me faltó aclarar algo, también podrías escribir:

MyServer/gds_db:AGENDA

\\MyServer\C:\SISTEMAS\AGENDA.FDB

\\MyServer@gds_db\C:\SISTEMAS\AGENDA.FDB

Como ves, hay muchas alternativas, todas funcionan bien, es cuestión de que elijas la que te resulte más conveniente.

Saludos.

Walter.




Subject: RE: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
Date: Thu, 5 Apr 2012 14:44:11 +0000

Hola Julio César

Antes del nombre de la Base de Datos escribes la IP del Servidor. Ejemplos:

7.52.152.222:C:\SISTEMAS\AGENDA.FDB

MyServer:C:\SISTEMAS\AGENDA.FDB     

7.52.152.222:AGENDA

MyServer:AGENDA

MyServer:MiBaseDatos

Yo prefiero la última alternativa porque así ningún curioso podrá tener la menor idea de donde se encuentra la Base de Datos ni cual es su nombre real.

Saludos.

Walter.




Date: Thu, 5 Apr 2012 09:35:24 -0500
Subject: Re: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
From: jvent...@gmail.com


Saludos, soy nuevo con Firebird y tengo muchas preguntas.
Walter, en la cadena de conexion ODBC donde se especifica la IP o el nombre del servidor que tiene la DB de Firebird....?

Gracias de antemano...   

El 3 de abril de 2012 22:39, Walter R. Ojeda Valiente <wr...@hotmail.com> escribió:
Gracias por el comentario, pero eso no ocurrirá ya que la filosofía de todos quienes están en el proyecto es que siempre sea Open Source y gratis.

Saludos.

Walter.




> Date: Tue, 3 Apr 2012 20:37:34 -0700

> Subject: [vfp] Re: ¿Como ejecutar comandos SQL desde fox usando ODBC para firebird 2.5?
> From: thenewin...@gmail.com
> Ok. Gracias por los tips! La harías bien como consultor del Firebird,
> cuando una empresa como Oracle la adquiera.
>
> Saludos!

Walter R. Ojeda Valiente

unread,
Jul 3, 2012, 8:12:54 PM7/3/12
to publice...@googlegroups.com
gds_db es un servicio del Windows, el cual debe estar activo para que Firebird funcione. Lo normal es que sea instalado automaticamente cuando se instala el Firebird.

De todas maneras, lo recomendable es conectarte mediante:

MiServidor:MiBaseDatos

para dificultarle la tarea a cualquier curioso que desee conocer en cual computadora está el Servidor y en cual carpeta y con cual nombre se encuentra tu Base de Datos.

Saludos.

Walter.





Date: Tue, 3 Jul 2012 16:58:28 -0700
From: jbon...@hotmail.com
To: publice...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages