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)
-   -   Ultima Linea del DbGrid (https://www.clubdelphi.com/foros/showthread.php?t=69902)

jafera 17-09-2010 13:54:45

Hola Eros.

Vigila con lo de compactar y cambiar las ID ya que si este campo se usa para relacionar tablas, vas a perder toda relacion que tengas y no te van a concordar los datos.

Si realmente quieres tener siempre el numero de clientes al dia, tienes que poner otro campo clave para futuras relaciones de tablas.

Es decir IdCliente como autoincremetal y seguido un Codigo Cliente que NO PUEDE VARIAR NUNCA.

Espero te sirva

Josep

Er0s 17-09-2010 15:59:35

Jafera no tengo las tablas relacionadas... pero gracias por la apreciación.

Casimiro.... el doble frenado acaba de fallar :S

Casimiro Notevi 17-09-2010 16:54:42

Cita:

Empezado por Er0s (Mensaje 376712)
Jafera no tengo las tablas relacionadas... pero gracias por la apreciación.

Una gran fuente de problemas :eek:

Cita:

Empezado por Er0s
Casimiro.... el doble frenado acaba de fallar :S

No me extraña, la verdad :(

Caral 17-09-2010 17:31:53

Hola
Las modificaciones las hice en un rato, sabia que tendrian algunos inconvenientes pero no me preocuparon por ser muy sencillos de solucionar.
Si te apetece solucionamos los problemas de una vez por todas para que el programa quede bien.
Por cierto: Lo del cambio de los nombres de los campos es por que para sql no caminan bien como los tenias.
Saludos

Er0s 18-09-2010 01:45:03

Cita:

Empezado por Caral (Mensaje 376720)
Si te apetece solucionamos los problemas de una vez por todas para que el programa quede bien.


Ok .... por mi no hay problema. Hago copia y borro código para empezar de 0.

Cita:

Empezado por Caral (Mensaje 376720)
Por cierto: Lo del cambio de los nombres de los campos es por que para sql no caminan bien como los tenias.

Sigo con BD de access, en SQL no he trabajado nunca, por ahora.

Caral 18-09-2010 01:48:26

Hola
Bien:
Que quieres hacer?
Que Quieres que modifiquemos? ( por mi todo esta bien).
Dime que hacemos paso a paso y le damos a esto.
Saludos
PD: Sql es el lenguaje para la BD, independientemente de access.

Er0s 18-09-2010 02:00:46

Casimiro... como voy a empezar un segundo diseño del programa, voy aprobar a diseñar de nuevo la BD relacionando las tablas. a ver si chapo la fuente de problemas. ;)

Er0s 18-09-2010 02:03:04

Cita:

Empezado por Caral (Mensaje 376763)
Hola
Bien:
Que quieres hacer?
Que Quieres que modifiquemos? ( por mi todo esta bien).
Dime que hacemos paso a paso y le damos a esto.
Saludos
PD: Sql es el lenguaje para la BD, independientemente de access.

Pues si te parece rediseño la BD relacionando las tablas y me das o me dais vuestra opinión?

Caral 18-09-2010 02:08:54

Hola
Me parece algo apresurado hacer una relacion de las tablas ya que lo que tienes son solamente 3 y por ningun lado veo una necesidad de relacion.
Tal vez cuando necesites hacer algun reporte entonces el mismo access te pedira la relacion, de ser necesaria.
Access es un archivo, no una bd de verdad, no amerita hacer cosas innecesariamente.
Es mi opinion.
Saludos

Er0s 18-09-2010 02:13:25

Que me dices de los nombres de los campos... me recomendaste cambiarlos

Dame un ejemplo de como lo harías y porque plz

Caral 18-09-2010 02:18:59

Hola
Los nombres de los campos los UNI osea:
Tu campo = CLiente ID
El mio = ClienteID.
Como ves, simplemente juntas las palabras; Por que?, por que al hacer una sentencia sql esta ve el contenido de los datos como string, palabra por palabra, en otra ocasion podriamos ampliar el por que, pero estoy seguro que empezando con sql tu mismo te darias cuenta de la razon.

Para mi es mas importante en este proceso saber:
1- Que quieres que haga el programa.?
2- Para que va a servir, que trabajo hara?.
3- Que apariencia quieres, la actual?.

Con estos tres puntos empezaríamos y vamos dandole forma.
Es un programa muy sencillo y pequeño, pero lo que me interesa es que entiendas el por que de cada cosa, no simplemente hacerlo.
Saludos

Er0s 18-09-2010 02:38:37

Los nombres de los campos siempre los he puesto como una sola palabra, esta ha sido la primera vez que las he hecho separadas...de aqui en adelante todo junto.

Cita:

Empezado por Caral (Mensaje 376769)

Para mi es mas importante en este proceso saber:
1- Que quieres que haga el programa.?
2- Para que va a servir, que trabajo hara?.
3- Que apariencia quieres, la actual?.

Como tu bien dices el programa es muy sencillo.

1 y 2. El programa es para hacer un estudio de la trazabilidad de la recogida de la aceituna. Desde los clientes que la recolectan hasta la exportación, pasando por los depósitos y la composición química de los mismos para su posterior envase.
De momento quiero almacenar los Clientes que nos entregan las aceitunas, cuantos kg de aceituna, de que calidad es la aceituna 1ª,2ª o 3ª cuantos kilos de cada calidad entrega y a que depósitos irá cada clase, entre otros datos de interés.

3. Quiero mantener la misma apariencia, mas que nada por su sencillez de manejo, quiero complicarle la vida lo menos posible al que se va a dedicar a meter datos.

Caral 18-09-2010 02:45:36

Hola
Te parece si abrimos un hilo nuevo para empezar con el programa paso a paso?.
De ser asi puedes abrirlo, en este mismo foro con el nombre que gustes, ojala alusivo al programa.
O me dices y lo abro yo.
Saludos

Caral 18-09-2010 04:08:56

Hola
De momento estoy haciendo algunos cambios en las tablas, en las imágenes que se presentan en los botones y otros.
Voy a dejar el programa funcionando con los cambios que me parecen lógicos, de ahí en adelante ya dirás que es lo que necesitas.
Saludos

Er0s 19-09-2010 01:56:17

Día Largo.......

De la apariencia cambiarias algo?

Caral 19-09-2010 16:14:50

Hola
Los cambios:
1- El archivo ini.
Este es un archivo con el nombre BD que esta en la carpeta, ahi solamente se cambia la ruta en la que la BD va a estar y se guarda.
Con esto la BD podra estar en donde quieras que el programa leera el archivo y buscara la bd en esa ruta.
2- Los botones ya muestran las imagenes mejor.
3- Todos los botones funcionan correctamente.
4- El boton de buscar:
Este boton habilita dos opciones: buscar por ID o por nombre.
Con solo cambiar el nombre o id filtrara la busqueda.

Todo el programa funciona.
Crea un nuevo cliente, modifica, elimina, busca, acepta, cancela.

Saludos

Er0s 20-09-2010 12:07:37

Caral ..... para la BD. Y si esa carpeta o ruta no existe en el PC? a mi no me la encuentra y tengo que decirle donde esta. No seria mejor que en el evento ONcreate capturásemos la ubicación del exe y le pasemos al datamodule donde está?

Ya tengo todo el programa ordenado y rulando casi a la perfección, el único fallo es el de siempre, cuando abro la ventana clientes y doy a nuevo me saca los datos del anterior cliente, cancelo, nuevo y ya no vuelve a fallar a no ser que cierre la ventana clientes y la vuelva a abrir. Es decir que el fallo solo ocurre la primera vez que le doy a Nuevo después de abrir la ventana Clientes.

Puede ser que al sacar la ventana Clientes y crear un cliente nuevo la tabla no estubiese abierta? voy a probarlo

Er0s 20-09-2010 12:13:42

Esto ... ejem..... como capturo la ruta del exe?

Er0s 20-09-2010 13:12:37

Mas datos...

Esa primera vez que se abre la ventana de Clientes y le doy por primera vez a "Nuevo Cliente" en el DBgrid aparece la nueva linea para dicho cliente y cuando pulso en los DBedits para empezar a meter datos y aparecen los datos del ultimo cliente, en el DBgrid se booraa la linea blanca y se pasa al ultimo cliente anteriormente añadido.

Caral 20-09-2010 18:15:57

Hola
Si quieres eliminar el archivo ini (que para mi es un error) y quieres colocar la BD en la misma carpeta del programa, entonces cambias en el datamodule, de esto:
Código Delphi [-]
procedure TDataModule1.DataModuleCreate(Sender: TObject);
Var BaseDeDatos, ConStr : String;
    IniFile: TIniFile;
begin
   // Obtiene la ruta y el nombre de la base de datos
   IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'BD.ini');
   BasedeDatos := IniFile.ReadString('BD','Path','');
   If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
   ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
             'Data Source='+BaseDeDatos+';'+
             'Persist Security Info=False;'+
             'Jet OLEDB: Database Password=admin';
   AC1.ConnectionString := ConStr;
   AC1.Open;

end;

A esto:
Código Delphi [-]
procedure TDataModule1.DataModuleCreate(Sender: TObject);
Var 
BaseDeDatos, ConStr : String;
begin
   BaseDeDatos := ExtractFilePath(Application.ExeName)+'Datos.MDB';
   If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos');
   ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
             'Data Source='+BaseDeDatos+';'+
             'Persist Security Info=False;'+
             'Jet OLEDB: Database Password=admin';
   AC1.ConnectionString := ConStr;
   AC1.Open;

end;

El dia que quieras colocar la BD en red, volverás al INI.
Saludos


La franja horaria es GMT +2. Ahora son las 05:47:09.

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