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 03-09-2008
Avatar de HombreGordo
HombreGordo HombreGordo is offline
Miembro
 
Registrado: jul 2008
Posts: 41
Poder: 0
HombreGordo Va por buen camino
Question Sistema de cuentas

Buenas. ¿Me pueden echar una mano (por favor) con un sistema de cuentas? Sé que mi pregunta es vaga, pero me gustaría que alguien me ayudase a diagramar y/o darle forma a la idea. Más o menos tengo una idea, que sería algo así como una base de datos, que conserve a los usuarios, y en base a esa referencia, cargue la información de ese usuario, y esa información tendría que ser, como las subcuentas pendientes que tiene el usuario, como sus deudas con el sistema de pago.

¿Posee alguien una guía o alguna forma de estructura y/o código de ejemplo que me pueda ayudar a llevar esta idea al programa? ¿Qué sistema de bases de datos me recomendarían para trabajar esto (BDE, ADO, etc etc etc...)? (Poseo Delphi 7 y Delphi 2007)
__________________
Aprendiz de Embarcadero RAD Studio...
Responder Con Cita
  #2  
Antiguo 03-09-2008
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Buenas,

Yo no me ofrezco a ayudar a diagramar y/o dar forma a la idea, pero sí a mostrarle unos recursos que le pueden servir como guía:
Y de paso a los compañeros del club, ese banco de modelos ER está interesantísimo...
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #3  
Antiguo 03-09-2008
Avatar de HombreGordo
HombreGordo HombreGordo is offline
Miembro
 
Registrado: jul 2008
Posts: 41
Poder: 0
HombreGordo Va por buen camino
Smile Gracias

Eh tío, gracias por las guías, quizás era lo que estaba buscando y no sabía por donde empezar. Sin embargo, más respuestas a este hilo serán muy agradecidas.
__________________
Aprendiz de Embarcadero RAD Studio...
Responder Con Cita
  #4  
Antiguo 03-09-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por TOPX Ver Mensaje
Y de paso a los compañeros del club, ese banco de modelos ER está interesantísimo...
Pues sí que se ve interesante. Así como para cuando esté uno falto de inspiración, hay ahí muchos puntos por donde empezar. Gracias por el enlace.

// Saludos
Responder Con Cita
  #5  
Antiguo 03-09-2008
Avatar de HombreGordo
HombreGordo HombreGordo is offline
Miembro
 
Registrado: jul 2008
Posts: 41
Poder: 0
HombreGordo Va por buen camino
Smile

Bueno, lo que necesito es más sencillo, es algo como un sistema de alquiler que determine el precio por períodos de alquiler, pero que vaya "contabilizando" si el cliente abona, y cosas por el estilo. De manera que cuando haga referencia a un cliente en la base de datos, cargue sus cuentas pendientes en alquiler, y pueda contabilizar, a la vez que se puedan agregar artículos a la cuenta del alquiler. Eso sería viniendo a ser el modelo básico de lo que hay que programar.
__________________
Aprendiz de Embarcadero RAD Studio...
Responder Con Cita
  #6  
Antiguo 03-09-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola HombreGordo,
No quisiera "sonar" un tanto atrevido, pero me parece más adecuado que nos vayas comentando tus avances y en la medida que continúas y encuentras dudas y problemas nos los haces saber.

Por poco el hilo me suena a hazme la tarea, se que no es tu intención. Pero es que el problema de que nosotros demos el primer paso y te propongamos nuestra visión del tema puede hacerte más o menos difícil comprender la idea.
Cada uno tiene una manera de enfocar y ver las cosas, y si te proponemos un modelo a seguir, existe la posibilidad de que para ti te sea más complicado de seguir, y entender.

Da el primer paso tu, y en base a ello te ayudamos ¿Te parece bien?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 03-09-2008
Avatar de HombreGordo
HombreGordo HombreGordo is offline
Miembro
 
Registrado: jul 2008
Posts: 41
Poder: 0
HombreGordo Va por buen camino
Smile Eh, sí lo sé

Yo mismo lo he notado, gracias por tu comentario. Jejej, disculpen la molestia, y así será, iré dando los pasos y conforme a las dudas, plantearé las preguntas, no sin antes haberlo intentado por mí mismo.

Editado: He revisado los modelos que TOPX puso, ya he aclarado la diagramación en mis papeles, sin embargo, la duda real que se me presenta, es la siguiente:
Dada una base de datos con una tabla que tiene "Clientes" con sus referencias numéricas, debe haber alguna forma de poseer otra tabla, donde se conserven las cuentas de dichas referencias, es decir, las entradas que están relacionadas con dichos "Clientes", y aparte de eso, debería poder importar las referencias de los artículos que se alquilaron que se conservan en las entradas de la tabla de las cuentas. Algo como esto:

Clientes ---> Tabla de cuentas pendientes <--- Inventario (artículos requeridos)

(Lo que está en cursiva, vendría siendo como una especie de tabla "principal" y lo que está en negrita vendrían siendo como las tablas que se van a correlacionar dentro de las entradas de la tabla de cuentas)

Lo que necesito es aprender a interrelacionar tablas, y es lo que realmente quise preguntar al inicio, pero no me supe explicar.

Gracias de antemano (y gracias por su comprensión también)
__________________
Aprendiz de Embarcadero RAD Studio...

Última edición por HombreGordo fecha: 03-09-2008 a las 12:45:39.
Responder Con Cita
  #8  
Antiguo 03-09-2008
Avatar de Fenareth
[Fenareth] Fenareth is offline
Miembro Premium
 
Registrado: oct 2007
Ubicación: Guadalajara, Jalisco, México
Posts: 494
Poder: 17
Fenareth Va por buen camino
Hola HombreGordo !

Pues mira en base a lo que ya pensaste, podríamos aterrizarlo en 3 Tablas cierto ?...

Una de Clientes con todo el detallado de su información personal (un ID, nombre, domicilio, etc.)

Otra de Movimientos en donde puedas capturar el detalle de salidas y entradas que ocasiona un cliente.

Una más de Productos en donde puedas tener el detalle de la información de los productos que se manejen.

Ahora, me gustaría saber que tanto sabes de relaciones, campos llave, integridad referencial, campos, registros y todo aquello que se relaciona con el diseño de las Bases de Datos. Estos conceptos son importantes al momento de pensar el cómo funcionará tu sistema.

Saludos
__________________
Ask questions. Think for yourself. Wake up and you’ll make the difference
Responder Con Cita
  #9  
Antiguo 04-09-2008
Avatar de HombreGordo
HombreGordo HombreGordo is offline
Miembro
 
Registrado: jul 2008
Posts: 41
Poder: 0
HombreGordo Va por buen camino
Smile

Ah, sencillo es así:

Está la tabla de Clientes que contiene los datos de los clientes, pero ésta a su vez contiene para cada cliente, un número de referencia, como un identificador, quizás pueda ser su cédula de identidad, o RIF empresarial. A partir de ese número, se cargan sus movimientos según la tabla de Movimientos que contiene sus cuentas pendientes, como alquileres en progreso. A su vez, esas cuentas, tienen unas referencias que son los artículos que alquiló, son referencias que vienen de una tabla llamada Inventario.

Conozco los campos clave, que son aquellos en donde los registros no pueden repetir sus valores, conozco los tipos de campos, tengo nociones de SQL, unos conceptos básicos de BDE. Sin embargo, "empotrar" estas referencias en la tabla Movimientos es lo que necesito aprender. Y otra cosa primordial, es que así como inserto datos en una tabla usando sentencias SQL, me gustaría aprender a extraer los datos de un determinado campo, pero no para llevarlos a un DBGrid como he venido haciendo, si no que pueda agarrar la cadena directamente del registro que se muestra en un determinado campo.
__________________
Aprendiz de Embarcadero RAD Studio...
Responder Con Cita
  #10  
Antiguo 04-09-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por HombreGordo Ver Mensaje
Ah, sencillo es así:

Está la tabla de Clientes que contiene los datos de los clientes, pero ésta a su vez contiene para cada cliente, un número de referencia, como un identificador, quizás pueda ser su cédula de identidad, o RIF empresarial. A partir de ese número, se cargan sus movimientos según la tabla de Movimientos que contiene sus cuentas pendientes, como alquileres en progreso. A su vez, esas cuentas, tienen unas referencias que son los artículos que alquiló, son referencias que vienen de una tabla llamada Inventario.

Conozco los campos clave, que son aquellos en donde los registros no pueden repetir sus valores, conozco los tipos de campos, tengo nociones de SQL,
Hasta aquí vamos bien.

Cita:
Empezado por HombreGordo Ver Mensaje
unos conceptos básicos de BDE.
Y aquí la arruinas ¿DBE? Se desaconseja seguir usando, ya ha quedado un tanto obsoleto y practicamente ha quedado por una cuestión de compatibilidad hacia atrás.

Cita:
Empezado por HombreGordo Ver Mensaje
Sin embargo, "empotrar" estas referencias en la tabla Movimientos es lo que necesito aprender.
Disculpa, pero no comprendo lo que dijiste. ¿Podrías aclararlo por favor? ¿A que te refieres con "empotrar".

Cita:
Empezado por HombreGordo Ver Mensaje
Y otra cosa primordial, es que así como inserto datos en una tabla usando sentencias SQL, me gustaría aprender a extraer los datos de un determinado campo, pero no para llevarlos a un DBGrid como he venido haciendo, si no que pueda agarrar la cadena directamente del registro que se muestra en un determinado campo.
Por lo que entiendo, lo que haces es mediante instrucciones SQL del tipo INSERT insertas elementos a tus tablas.

¿Tu pregunta al respecto para extraer datos viene a por saber como consultar algunos campos de forma "individual"? La verdad es que no logro comprenderte. Dime si entiendo bien: ¿Dices que para consultar información lanzas una instrucción SQL del tipo SELECT y muestras los datos en un DBGrid? ¿Quieres leer estos datos sin tener que usar DBGrid?

Veamos como te puedo explicar el acceso a campos.
Como dices que usas DBE basaré la explicación en ellos.

Mediante un TTable podemos acceder a los campos de las siguientes formas:

1. Forma Directa

Consiste en armar los campos persistentes, es decir creados en tiempo de diseño. Para ello solo hay que tener previamente establecido la tabla y la base de datos a la que vamos a acceder. Luego, con solo presionar el botón secundario sobre el componente y pulsar "Fields Editor" nos aparece un cuadro de díalogo. Luego volvemos a presionar el botón secundario y ahora en "Add Fields".

De esta forma conseguimos añadir ya los campos de forma persistente.

Si te fijas en Objet TreeView notarás que dentro de la rama Fields correspondiente a la tabla aparecen listados dichos campos. Notarás que a cada uno Delphi le ha asignado un nombre. Este nombre obedece a una simple regla:

Nombre del TTable + Nombre del Campo en la DB

Por ejemplo, si el TTable se llama tbCliente y el campo es ID, el nombre que se obtiene es tbClienteID.

Ahora para hacer uso de este campo podemos hacer algo como esto:

Código Delphi [-]
MiTablaMiCampo.Value := ...... // para establecer el valor
variable := MiTablaMiCampo.Value; // para leer el valor

Tanto el valor leído como el a ingresar o modificar corresponderá al registro en el cual esté parado.

Esta forma al ser la más directa es la más segura para acceder al campo. Como desventaja se podría decir que hace más grande al archivo dfm y ocupandonos más memoria.

2. Forma intermedia


La forma intermedia (si se lo puede llamar asi) es emplear la propiedad Fields del TTable tanto para leer como para asignar:
Código Delphi [-]
MiTabla.Fields[IndiceCampo].Value := .... 
variable := MiTabla.Fields[IndiceCampo].Value;

Siendo IndiceCampo un valor, constante, o una variable entera mayor o igual a cero y menor a la cantidad de campos.
IndiceCampo indica en forma numérica al campo al que deseamos acceder. Los campos se comienzan a contar en el orden en que fueron descriptos en en la tabla. Supongamos que el campo ID fue definido en la primera posición, por tanto el valor que le corresponde es el 0.

Esta segunda forma es menos directa, el compilador debe hacer un poco más de trabajo para localizar el campo. Se accede mediante el índice y esto implica posicionarse en la lista del los campos. Como desventaja de este método se puede decir que ante algún cambio en la tabla corremos el riesgo de acceder al campo erroneo si no tenemos cuidado.

Fields[] nos regresa un objeto TField. En el ejemplo asumí que no nos interesa guardar en una variable el objeto y nos ponemos a hacer uso de dicho objeto (propiedad Value).

3. Forma Indirecta

Esta última forma de acceder al campo es la más "lenta" de todas. Consiste en buscar al campo dentro de la lista por el nombre, en vez del índice, mediante el método FieldByName:

Código Delphi [-]
MiCampo := MiTabla.FieldByName('NombreCampo');
MiCampo.Value := .....
variable := MiCampo.Value;

Código Delphi [-]
MiTabla.FieldByName('NombreCampo').Value := ....
variable := MiTabla.FieldByName('Nombrecampo');

FieldByName devuelve la referencia al objeto TField que representa al campo buscado. Si lo encuentra nos los regresa, en otro caso, conseguiremos una excepción. Notarás que mostré dos ejemplos parecidos: en el primero guardo en una variable MiCampo del tipo TField el resultado de FieldByName y luego trabajo con ella. En el segundo, simplemente me evito dicha variable y hago todo al vuelo.

Las necesidades te dirán que hacer... en algunos casos será necesario guardar dicha referencia, en otros no.

Como ventaja de esta forma se puede decir que es las más flexible puesto que nos evita posibles líos ante los cambios en la estructura de la tabla: si se mueven los campos de lugar no interesa. Si el campo existe, FieldByName siempre lo encontrará.

Del mismo modo que se usa el TTable, podemos acceder a los campos mediante un TQuery. La diferencia está en que ahora es necesario contar con una instrucción SQL válida indicando la/s tabla/s a las que deseamos consultar.
También disponemos de campos persistentes, Fields y FieldByName.

Hay otra alternativa para acceder a un campo que no he mencionado: FindField(). Este método (función) nos regresa el objeto que representa al campo en caso de encontrarlo, de otra manera nos devuelve vacio (nil). Ha diferencia de FieldByName este método no arroja excepción.

No se si con acceder a los campos te refieres a lo que he dicho. Te agradecería que me hicieras saber si te ha sido de utilidad.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #11  
Antiguo 05-09-2008
Avatar de HombreGordo
HombreGordo HombreGordo is offline
Miembro
 
Registrado: jul 2008
Posts: 41
Poder: 0
HombreGordo Va por buen camino
Smile

Sí, ha sido justo a lo que me refería Gracias Delphius. Sin embargo, el problema que se presenta, es a la hora de cargar dichas "Cuentas" por usuario, debido a que la tabla Movimientos es la que conserva las referencias a las cuentas pendientes, en ese caso, yo no tendría problema en que cada cuenta de alquiler, fuesen tablas también creadas con sentencias SQL, con otra estructura, que permita contabilizar las mismas. Espero que de esta manera no se vuelva muy pesado el programa . A menos que alguien me pueda sugerir una forma diferente de cómo hacer esto, jejeje, creo que soy un poco rústico con las bases de datos al no saber como optimizar el trabajo de las mismas, por lo menos al momento de aligerar la carga.

EDITADO: Utilicé la forma intermedia para obtener los datos.
__________________
Aprendiz de Embarcadero RAD Studio...

Última edición por HombreGordo fecha: 07-09-2008 a las 05:38:33.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Validar Cuentas de usuario ajromero Conexión con bases de datos 5 20-10-2007 00:53:05
Cuentas de Usuario vs Cuentas de Usuario Deiv Windows 8 18-01-2006 03:56:37
49 Cuentas de Gmail santiago22 Noticias 0 17-02-2005 02:25:08
cuentas x cobrar por edades ernestocs666 SQL 1 12-10-2004 21:26:19
Problemas con las cuentas en sql plus 8 y forms 6 !! gunshit Oracle 3 26-08-2004 20:24:11


La franja horaria es GMT +2. Ahora son las 01:11:23.


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