Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Hola malcomp,

Cita:
Empezado por malcomp
En este momento estoy desarrollando una aplicación pero como estoy en período de aprendizaje con este tema, creo que probaré distintas opciones, y ahí veo cuál me acomoda más, pero por ahora, me gustó mucho la 3.
Tu experimenta... y usa la que más te resulte cómodo.
Aunque la opción 1 es la más fácil de emplear (y por lo general la primera que se estudia) tiene un defecto muy grande: estarás mezclando la interfaz con la capa de acceso a datos. Lo cual lleva a una mayor dependencia entre la interfaz y la base de datos.

La opción 3, en cambio, que a mi modo de ver y entender, es la más recomendable. Ya que el canal de comunicación entre la interfaz y la base de datos es más delgado, mucho más "modular" (por ponerle un nombre).

La implementación de los módulos de datos es una extensión de la segunda opción. Esto quiere decir que puedes crear/destruir (abrir/cerrar) varios módulos de datos de forma tal que consigas separar el "modelo de datos" en varios módulos más o menos independientes. Por ejemplo: supongamos que tu tienes 3 módulos: Clientes, Ventas, Compras. Cada uno tiene lo necesario para acceder a una PARTE de la base de datos. Esto te permite reducir memoria y trabajar solo con lo necesario según se necesite. Por ponerte otro ejemplo: quien tenga un permiso para cargar Compras, solo debe tener creado el módulo de compras (y el de la conexión)... ¿Para qué cargar con tantas cosas si solo a él le interesa compras?

La elección de como distribuir los módulos dependerá también de las necesidades de mantenimiento, de la complejidad del sistema y otros factores más... Por lo general, si se sabe que el sistema es grande, y complejo... crear los módulos por demanda es una muy buena opción.

A los fines de tu práctica... comienza con uno solo. Después sigue avanzando.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #2  
Antiguo 22-07-2007
malcomp malcomp is offline
Miembro
 
Registrado: nov 2006
Posts: 24
Poder: 0
malcomp Va por buen camino
Cita:
Empezado por Delphius
Tu experimenta... y usa la que más te resulte cómodo.
Según mi forma de ver, también la 3 es la mejor.

Por ahora, tengo otra pregunta.
En access, existe un atributo que se le puede agregar al campo Clave Principal, que hace que los valores se generen automáticamente de forma incremental. Se llama AUTONUMERICO.

¿Se puede hacer lo mismo con FireBird?

Responder Con Cita
  #3  
Antiguo 22-07-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 28
Delphius Va camino a la fama
Cita:
Por ahora, tengo otra pregunta.
En access, existe un atributo que se le puede agregar al campo Clave Principal, que hace que los valores se generen automáticamente de forma incremental. Se llama AUTONUMERICO.

¿Se puede hacer lo mismo con FireBird?
Si, se puede conseguir este efecto empleando los generadores y tiggers.

A modo de ejemplo:

Este es el tigger que se encarga de generar el número antes de insertar (Before insert)

Código SQL [-]
CREATE TRIGGER SET_CUST_NO FOR CUSTOMER
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN

    if (new.cust_no is null) then
    new.cust_no = gen_id(cust_no_gen, 1);
END
^

SET TERM ; ^

Y Este es un generador, que se encarga de incrementar de uno en uno. Por ello es el valor 1. Puedes conseguir incrementar de ha saltos mayores cambiandolo:

Código SQL [-]
CREATE GENERATOR CUST_NO_GEN;
SET GENERATOR CUST_NO_GEN TO 1;

Para mayor info, busca en los foros que se trató el tema.
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 22-07-2007
malcomp malcomp is offline
Miembro
 
Registrado: nov 2006
Posts: 24
Poder: 0
malcomp Va por buen camino
Costó un poco, pero funcionó.

Ahora, he creado el firmulario MyFormData, donde he puesto todas las conexiones. Tengo la IBDataBase, IBTransaction, y todas las IBTables y DataSources necesarias.

Esto queda en una unidad llamada MyFormData.

Tengo unas dll que utilizan esta unidad (uses MyFormData) y en tiempo de diseño, puedo ver los datos que están dentro de una las tablas, ya que para probar tengo todas las conexiones activadas.

Sin embargo, cuando ejecuto la aplicación, las columnas están vacías e incluso se ve sólo una columna sin siquiera poder ingresar datos.


¿Alguien sabe qué puede ser esto?

Si pongo los objetos para conexión (IBDataBase, etc) en el mismo formulario, todo funciona ok, pero cuando los objetos están en el formulario de datos (DataModule), no puedo ver los datos.

Saludos y gracias.
Responder Con Cita
  #5  
Antiguo 22-07-2007
malcomp malcomp is offline
Miembro
 
Registrado: nov 2006
Posts: 24
Poder: 0
malcomp Va por buen camino
Solucionado:

Al crear al formulario, en el evento OnCreate, también se crea el DataModule. Yo pensaba que estaba disponible de inmediato.

Al momento de cerrar el Formulario, aplico un FreeAndNil y listo.
Responder Con Cita
  #6  
Antiguo 28-07-2007
malcomp malcomp is offline
Miembro
 
Registrado: nov 2006
Posts: 24
Poder: 0
malcomp Va por buen camino

Muchas gracias a todos.
Ahora realmente puedo trabajar.
Estoy haciendo algunas pruebas y prácticas y pornto mudaré todos mis programas con archivos planos a bases de datos.

Nuevamente muchas gracias a todos quienes me orientaron en el tema. Ahora debo realizar un poco de prácticas en SQL, pero eso, por ahora, es lo de menos para mí. Con ayuda de Access y el Libro Negro de Delphi, estoy haciendo lo que necesito.

Saludos a todos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comenzar con Java Caral JAVA 31 19-08-2007 16:58:10
Como comenzar con mysql Ferml2007 SQL 2 20-01-2007 07:05:06
Comenzar con firebird 2 sitrico Conexión con bases de datos 8 16-12-2006 03:37:09
Como comenzar a trabajar con PHP? xer0-q PHP 2 26-12-2005 20:24:38
Como comenzar a trabajar con PHP? xer0-q Varios 1 24-12-2005 21:31:34


La franja horaria es GMT +2. Ahora son las 02:51:07.


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