Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Firebird + Zeos + Delphi ¡¡ayuda!!... (https://www.clubdelphi.com/foros/showthread.php?t=57762)

Jheysson13 26-06-2008 17:25:26

Firebird + Zeos + Delphi ¡¡ayuda!!...
 
Hola a todos.
mi problema es el siguiente, tengo firebird 2.0, los componetes zeos instalados en delphi 7, he creado mi base de datos (IB- Express personal) en una carpeta junto con mi proyecto (c:\prueba1) pero cuando intento conectar mi base de datos con el componente z conecction
Código Delphi [-]
database : mybase
hostname :localhost
passwor  : masterkey
protocolo :firebird 2.0
user :       sysdba

y he copiado las librerias de firebird en la carpeta de system de windows.
mas cuando intento activar mi base de datos
connected (true) me sale un error asi:

Código SQL [-]
SQL error: I/O error for ''@2'' error while triying to open file El sistema no puede hallar el archivo especifico.. error code: -902. unsefull exection causade by a system error that procedure successful of subsequent staments.

que me falta o hice mal?
gracias de antemano.

Jheysson13 26-06-2008 19:05:03

Bueno solo keria decir que creo que encontre una solucion por so alguien alguna ves tiene este problema:
lo que hice fue

declarar una consatante en la unit del formulario o datamudelo
ejemplo:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB,  Grids, DBGrids, StdCtrls, ZAbstractRODataset, ZAbstractDataset, ZAbstractTable, ZDataset,
  ZConnection;
const
 namebd= 'mybase.fdb';

y luego cuando se crea el formulario esto:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin

   if zconnection1.Connected then   begin
    zconnection1.Connected:=false; end else begin
    //asignamos la base de datos
    zconnection1.Database:=
    includetrailingpathdelimiter(extractfilepath(paramstr(0)))+ namebd;
    zconnection1.Connected:=true;
    ztable1.Open;     end;

bueno kisas otros tengan otra solucion mas recomendable y estoy abierto a ellas . si creen que esto pueda ocacionar errores en el futoro de mi proyecto pudieran informarme, pues apenas estoy empesando a trabajar con bases de datos...graacias...

maeyanes 26-06-2008 19:10:52

Hola...

Y en tiempo de diseño debes poner la base de datos con toda su ruta completa para que el componente la pueda encontrar...


Saludos...

Jheysson13 26-06-2008 19:29:39

Cita:

Empezado por maeyanes (Mensaje 296485)
Hola...

Y en tiempo de diseño debes poner la base de datos con toda su ruta completa para que el componente la pueda encontrar...


Saludos...

disculpa mi ignorancia, pero podrias ser mas claro es que no se a que te refieres. como dije apenas estoy empezando a trabajar con firebird.

de la manera en que esta hecho el codigo puedo copiar mi carpeta en cualquier lugar (C:/, d:/, C:/carpeta/otra, etc) y aun asi abre sin problemas, podrias decirme que he hecho mal o mas bien que me falta.

saludos.

maeyanes 26-06-2008 19:33:56

Hola...

Lo que haces está bien, pero solo te sirve para tiempo de ejecución (Runtime), pero en tiempo de diseño (cuando estás editando el código fuente y diseñando tus formas) el componente necesita el nombre de la base de datos con su ruta completa.



Saludos...

Jheysson13 26-06-2008 19:44:58

oookkkkkk ya te entendi, jejje, te digo que al principio tenia un choke con eso jejeej, gracias por la aclaracion.. sucede que me gusta pensar en el momento del runtime, por que de esta manera si necesito llevar mi programa a otra pc evito un poco la modificacion de los componentes, no se si me entiendas.

gracias por tu comentario..:)
salu2

maeyanes 26-06-2008 20:03:57

Hola...

Está bien como piensas, pero, si en tiempo de diseño quieres ver el resultado de alguna consulta en un DBGrid, por ejemplo, necesitas tener bien configurado el componente de conexión...



Saludos...

Jheysson13 27-06-2008 21:11:36

alguien podria ayudarme a configurar mis componetes zeos para que pueda funcionar en una red.
no se si estoy aciendo lo correcto pero tengo dos pc y he creado una prueva de proyecto (la describo arriba) en mi pc principal y he puesto compartida la carpeta del proyecto mas en la segunda pc no me abre. ambas tienen winxp sp2, y le instale firebird a ambas y copie las librerias dentro de la carpeta del system de ambas pc.
pero me da un eror asi:

Código SQL [-]
sql error : unavailable database. error code : -904. Unsuccessful execution causade by an unavailable resource.

la base de dato creada entan registradas como
Código Delphi [-]
serve: remote
serve name: localhost
protocolo  : tcp/ip
serve version :firebird 2.0

que tengo que hacer para que funcione, espero puedan ayudarme gracias..

enecumene 27-06-2008 21:16:08

Hola, ¿las dos tienen IP?, si es así:

ZConnection1:

Database: C:\base.fdb
HostName: Aquí va el IP de la primera PC en vez de Localhost
User: SYSDBA
Password: masterkey
protocol: firebird-2.0

Saludos.

Jheysson13 27-06-2008 21:34:57

hola.
cambie el localhost por la ip de mi pc donde esta el proyecto, y direccione mi base de datos con todo y el nombre en la propiedad database, pero me sigue aciendo lo mismo, alguna otra observacion que creas que me pueda ayudar..gracias

enecumene 27-06-2008 21:44:33

¿y cual es la ruta de la base que pones?

Jheysson13 27-06-2008 21:57:30

Código Delphi [-]
connected  : true
database : C:\Documents and Settings\user\Escritorio\proyectos\prueva\MYBASE.FDB
hostname: 10.0.0.4
passwor :masterkey
protocolo : firebird 2.0
user    : sysdba

esa es la configuracion de mi zconnection, si necesitas mas detalle me dices.
¿que puede estar mal?

Jheysson13 10-07-2008 17:41:01

saludo otra ves, como este post ya lo habia habierto no kise habrir uno nuevo, ya que aun tengo el mismo problema y buscado por miles de hilo en el foro y no he dado con mi problema todavia .

al tratar de conectar mi apliccion en red me da el siguiente error

Código SQL [-]
sql error : unavailable database. error code : -904. Unsuccessful execution causade by an unavailable resource.

como dije anterior mente tengo firebird 2.0 (en las dos pc)+ zeos..
cree mi base de datos con ib expert personal

server : remote
servername : localhost
passwor :masterkey
server version : firebird 2.0
user : sysdba
dialect 3


y configure mi z conecion de esta manera:
Código Delphi [-]
connected  : true
database : C:\Documents and Settings\user\Escritorio\administrador de inventario\base_de_datos.FDB
hostname: 10.0.0.4 --- //este valor lo cambie varias veces para probar a localhost y no tubo efecto
passwor :masterkey
protocolo : firebird 2.0
user    : sysdba

y en el datamodulo hice este codigo para el runtime
uses
Código Delphi [-]
  SysUtils, Classes, ZConnection, DB, ZAbstractRODataset, ZAbstractDataset,
  ZAbstractTable, ZDataset;
 const  mybase='base_de_datos.FDB';
.......
begin
 //asignamos la base de datos
    BASEDATOS.Database:=
    includetrailingpathdelimiter(extractfilepath(paramstr(0)))+ mybase;
    basedatos.Connected:=true;

NOTA: la aplicacion corre si problema alguno en la pc pricipal, pero en las demas no conecta la base de datos sino que da el error mencionado al principio y despues abre el programa sin base de datos.
el programa esta en una carpeta llamada
administrador de inventario, la cual esta compartida en red y esta puede ser modificada por los demas usuarios para no tener errores de almacenamiento.

espero que puedan ayudarme por favor si necesitan algun otro dato me lo puden hacer sabe.
gracias de antemano..:)

enecumene 10-07-2008 18:33:42

A ver, amigo JHeysson, ¿seguro que ambas maquinas estan interconectadas ya cada una tiene un ip distinta?, si es asi intenta hacer un ping entre ambas maquinas. En la pc Cliente la coneccion debe ser en vez de localhost el ip de la Maquina principal.

Saludos.

maeyanes 10-07-2008 19:42:09

Hola...

Si vas a conectarte en forma local a la base de datos, el tipo de server debe estar en Local no en Remote.

En la PC principal obvio que va a correr bien el programa, ya que el servidor se está ejecuntando en esta. Pero para las otras PC's, locahost (la PC donde ejecutas) no está ejecutando un servidor de Firebird y es ahí donde viene el error.


Saludos...

Jheysson13 11-07-2008 00:37:40

Cita:

Empezado por maeyanes (Mensaje 299373)
Hola...

Si vas a conectarte en forma local a la base de datos, el tipo de server debe estar en Local no en Remote.

En la PC principal obvio que va a correr bien el programa, ya que el servidor se está ejecuntando en esta. Pero para las otras PC's, locahost (la PC donde ejecutas) no está ejecutando un servidor de Firebird y es ahí donde viene el error.


Saludos...

a ver si te entendi, en ves de Remote en la base de datos firebird tengo que poner local, si es asi acabo de cambiar eso y aun asi me da el mismo error...:(

podrias decirme como tengo que crear exactamente mi base de datos y configurar el zconection para trabajar en red si no es mucha moletia, simplemente ya he puesto mas arriba como cree mi base de datos con ib expert y como configure mi zconection. puedes hacer un ejemplo semejante al mio, solo que si funcione en red.
gracias de antemano

Jheysson13 11-07-2008 15:13:14

hola de nuevo.

quieria cerrar el tema agradeciendo por su ayuda y confirmando que por fin pude hacer que funcionara en mi red..

gracias a todos y sigan asi por favor:D:D
salu2

lKinGl 12-12-2008 23:40:57

Cita:

Empezado por Jheysson13 (Mensaje 299567)
hola de nuevo.

quieria cerrar el tema agradeciendo por su ayuda y confirmando que por fin pude hacer que funcionara en mi red..

gracias a todos y sigan asi por favor:D:D
salu2

creo que seria bueno que publicaras como hiciste funcionar el comprotamiento de tu bd en red ;)

Delphius 13-12-2008 02:37:57

No uso Zeos, pero Firebird si. Sólo hay que tener presente esto:

1. En los clientes, la conexión debe ser del tipo "Remote", y no local.
2. En HostName debe ir ya sea la IP del server, o el nombre asignado. Localhost siempre se auto apuntará.
3. El puerto 3050 debe estar disponible.
4. No se necesita compartir el directorio donde estará la DB. ¿Para que compartir y hacer visible a los clientes donde está la base?

Saludos,

Sick boy 17-12-2008 12:52:31

Unos pequeños detalles.
Cita:

En HostName debe ir ya sea la IP del server, o el nombre asignado. Localhost siempre se auto apuntará.
Tal y como el crea el nombre de la conexion, no se auto apuntará localhost, de hecho, sin el localhost no le va a funcionar en Vista.
El host, la ip, nombre asignado o localhost hay que indicarselos explicitamente.

Cita:

4. No se necesita compartir el directorio donde estará la DB. ¿Para que compartir y hacer visible a los clientes donde está la base?
Totalmente de acuerdo.
No es que no lo necesite, es que no debe hacerlo, en ninguna circunstancia.
Posibles problemas, por ejemplo, que un usuario copie o mueva la carpeta para hacer un backup. Muy probablemente corromperian la BBDD.
Sin hablar de que cualquier usuario de la red puede copiarse la base de datos y llevarsela a su casa (si sabes hacerlo, puedes evitar la corrupcion de datos), con la consiguiente brecha de seguridad.


La franja horaria es GMT +2. Ahora son las 20:46:55.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi