Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
El foco del editor no está sobre el código fuente, sino sobre el área de notificación de Errores de compilación. Haz clic sobre el código fuente, justo en la palabra que da error (normalmente es el nombre de una función y/o Tipo de datos) y despues pulsa F1

(Me he pasado con el nombrecito.... pero no sé decirlo de otra forma )

Perdona que no te diga los "Uses", pero no lo tengo a mano, además, si te digo los "uses", para otra vez tendrás el mismo problema; de esta forma sabrás "buscarte las habichuelas" en futuras ocasiones.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 24-08-2005 a las 15:30:11.
Responder Con Cita
  #2  
Antiguo 24-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 19
Sayuri Va por buen camino
Una pregunta tonta.... ¿al salir de la aplicación tengo que desconectar el database y los datasets?
Responder Con Cita
  #3  
Antiguo 24-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Es una pregunta interesante y además con truco incluido.

En principio no. Cuando se va a destruir el Datamodule, se destruye antes todos los componentes que tenga dentro, tables, database, etc, si estan abiertos se cierran primero y despues se destruye.

Si una de las tablas está en edición (el usuario está modificando algo) y cierra el programa, esos cambios no se guardarán; el usuario puede esperar que si se guarden !!.

Se puede usar un bucle recorriendo todos los componentes del Datamodule, si son tablas y estan en modo edición, hacer un Post de esa tabla (cuidado con relaciones Maestro-Detalle).

Si usas Database1.Close; tambien se cierran automáticamente todas las tablas que esten asociadas a ese Database. Sin embargo, al abrir (connected:= true) el database, no se abren las tablas asociadas.

Lo mismo ocurre con la Session, se cierra y se destruye al destruir el Datamodule.

Por cierto: A preguntas distintas, crear distintos hilos

Un saludo
Responder Con Cita
  #4  
Antiguo 24-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 19
Sayuri Va por buen camino
y yo que no tengo las tablas dentro del datamodule.... al cerrar tengo que desactivar las tablas y por otra parte desconectar el datamodule

muchísimas gracias lepe y a todos por vuestra ayuda
Responder Con Cita
  #5  
Antiguo 24-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Tambien tiene ventajas al poner las tablas en los formularios. Puedes abrir 2 ventanas de facturas a la vez, mientras en una editas una factura, en la otra ventana puedes ver otras facturas para ver "datos de interes".

Quien dice Facturas, dice Ventana de Clientes, albaranes, etc. Es muy común cuando estas dando de alta, ver los datos de otro cliente, (porque el domicilio es en la misma calle, por si está dado de alta con otro nombre, etc).

Si tienes las tablas en el Datamodule, y dos ventanas de clientes, ambas ventanas apuntan al mismo cliente, al cambiar una, tambien cambia la otra... Cuestión de diseño .
Responder Con Cita
  #6  
Antiguo 24-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 19
Sayuri Va por buen camino
pero no me has contestado... tengo que poner el datamodule disconnected al cerrar y desactivar los ttables?
siento ser pesada

Por cierto que el compañero JVC Soft me indicó que se puede ejecutar la misma aplicación mediante un acceso directo en el ordenador cliente (es decir los dos ejecutan el mismo .exe) pero eso va en contra del Local Share que me indicasteis.
Muchas gracias
Responder Con Cita
  #7  
Antiguo 25-08-2005
Sayuri Sayuri is offline
Miembro
 
Registrado: jul 2005
Posts: 131
Poder: 19
Sayuri Va por buen camino
por cierto, ya he conseguido compilar con la función getusers, y la unidad que faltaba era BDE... muchas gracias, pero al ejecutar me da problema al entrar en la función....

Código Delphi [-]
function GetUsers:Integer;
var
  UserList: TStringlist;
  TmpCursor: hDbiCur;
  rslt: dbiResult;
  UsrDesc: USERDesc;
begin
  Result:=0;
  Check(DbiOpenUserList(TmpCursor));
  UserList := TStringList.Create;
  try
    UserList.Clear;
    repeat
      Rslt:= DbiGetNextRecord(TmpCursor, dbiNOLOCK, @UsrDesc, nil);
      if Rslt <> DBIERR_EOF then
        UserList.Add(UsrDesc.szUserName);
    until Rslt <> DBIERR_NONE;
    Result := UserList.Count;
  finally
    Check(DbiCloseCursor(TmpCursor));
    FreeAndNil(UserList);
  end;
end;

Exactamente me dice :
Cita:
An error ocurred while attemping to initialize the Borland Database engine (error $2A06)
Responder Con Cita
  #8  
Antiguo 25-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
Empezado por Sayuri
pero no me has contestado... tengo que poner el datamodule disconnected al cerrar y desactivar los ttables?
Ahhh, ¿pero tenía que contestar?. Si te fijas, no lo estabas preguntando, sino afirmando

No. En el Destroy del Datamodule pones Database1.Close y listo, se cerrará el Database y todas las tablas.

En cuanto a desconectar el Datamodule, la verdad, no sé a que te refieres, supongo que te referías al Database.

Cita:
Empezado por Sayuri
Por cierto que el compañero JVC Soft me indicó que se puede ejecutar la misma aplicación mediante un acceso directo en el ordenador cliente (es decir los dos ejecutan el mismo .exe) pero eso va en contra del Local Share que me indicasteis.
Además estás sobrecargando la red, ya que estas ejecutando un programa de forma remota (irá más lento).

En el ordenador cliente:
- instala el bde
- configura el alias para que apunte al ordenador que actua de Servidor
- Metes el .exe y si acaso un archivo .ini de configuración.
- Listo.

Seguimos con GetUsers:

Antes de ejecutar tu programa debes cerrar en tiempo de diseño (como mínimo):
- las tablas
- el Database

Ten mucho cuidado, ya que cada vez que añades un campo a una tabla, el Database.Connected se pone a True él solito, así que debes ponerlo a false.

Ten en cuenta que Delphi tambien es un usuario más del BDE, por tanto, tambien cuenta. Las pruebas que vayas a hacer sobre GetUsers, cierra el proyecto de Delphi y ejecuta tu programa desde el explorador de windows.

Para poder usar la función GetUsers, debes tener la session y el Database Abiertos en tiempo de ejecución, y por supuesto el BDE debe estar instalado.

El tema de GetUsers se abrió para borrar los archivos *.LCK. Tienes 2 alternativas:
- Abrir la session y el Database, consultar el número de usuarios y si es 1 (tú sola), entonces cierras el database, borras los archivos y despues vuelves a conectar. (demasiado complejo....)
- Puedes borrar los archivos *.LCK sin más. Si alguien los está utilizando, no se borrarán, ya que Windows no lo permitirá (y no saca ningun error utilizando DeleteFile). Si nadie los está utilizando se borran.

Última edición por Lepe fecha: 25-08-2005 a las 10:39:29.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:26:02.


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
Copyright 1996-2007 Club Delphi