Hola
Con lo que voy a comentar no pretendo ser en lo mas minimo un conocedor o programador, es solo mi vision de tu programa, que para mi es excelente, recuerda, soy novato en esto.
Voy a tratar de contestar tu pregunta y hacerte ver mas o menos como funciona el programa, ademas lo que creo que esta fallando, el por que esta lento.
Tu pregunta:
Cita:
1.- Que es el INI
2.- Para que sirve
3.- Como funciona
4.- Y que beneficio obtendo en implementarlo en el sistema.
|
1- es un archivo texto
2- se usa para muchos propositos, en este caso para que contenga una direccion y sea leida por el programa, sin tener que modificar este, si se quiere cambiar la dirreccion o ubicación de la base de datos solo se cambia en el ini, no en el grograma, en otras palabras facilita las cosas.
3- En este caso funciona como conector con la base de datos.
4- el beneficio esta en que no se tiene que modificar el programa cada vez que se cambie la base de datos de ubicación, con solo cambiarla en el ini, este la encontrara.
Por ejemplo el programa, como en tu caso, necesita que la base de datos este en el mismo directorio y tienes que estar indicando constantemente la ubicacion de la base de datos, si se quiere cambiar el programa a otro ordenador, este no encontrara la base de datos y dara error, entonces no tienes la flexibilidad de mover, tanto el programa como la base de datos.
Como te comente, ya puede el ini, puede localizar las dos base de datos, empresas y datos, el problema esta en los bmp.
Que creo que esta fallando:
Cuando se habla de red, se esta pensando en transportar datos de un ordenador a otro.
No es lo mismo pasar texto que bmp o jpg, en este caso, pasas todo, constantemente.
Por eso sugerí que se colocara el programa en cada ordenador y la base de datos en un servidor, asi lo que viaja es la informacion, no todo, pero me encontre con estos bmp, que son el problema mas grande.
Como hace la conexion con la base de datos tu programa:
Código Delphi
[-]
directorio:=ExtractFilePath(ParamStr(0));
g.GConeccion.Connected:=false;
g.GConeccion.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+directorio+'Base de datos\General\General.mdb;Persist Security Info=False';
g.GConeccion.Connected:=true;
directorio es exactamente el path donde este el programa, de ser otro, no funciona, en este caso busca la base de datos general en una ubicacion determinada, si es otra ubicacion, tendras que modificar el programa, lo mismo haces para la base de datos Datos.mdb, osea dos veces lo mismo y en cada proceso.
Como hace la conexion un ini:
Código Delphi
[-]
procedure TG.DataModuleCreate(Sender: TObject);
Var BaseDeDatos, ConStr : String;
IniFile: TIniFile;
begin
IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'BDatos.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
atabase Password=admin';
GConeccion.ConnectionString := ConStr;
GConeccion.Open;
El IniFile extrae el path del archivo ini en este caso BDatos.ini y busca la direccion o ubicacion de la base de datos, como en este caso son dos, se colocan dos opciones de path en el ini, asi:
Cita:
[BD]
Path="C:\Base de datos\General\General.MDB"
[BD1]
Path="C:\Base de datos\Datos\Datos.MDB"
[Logon]
Auto="No"
Login=""
Pass=""
|
Como ves es esencialmente lo mismo, solo que en tu caso, no puedes poner la base de datos en otro directorio que no sea el del programa.
Otro aspecto de la programacion, en cuanto a la conexion:
Cuando inicializas el proyecto, generas todo de una vez, esto siempre alenta el proceso, inevitablemete, en tu caso, generas todo esto:
Código Delphi
[-]
Application.Initialize;
Application.Title := 'Administración';
Application.CreateForm(TMenu_Principal, Menu_Principal);
MENU_PRINCIPAL.Show;
MENU_PRINCIPAL.Update;
MENU_PRINCIPAL.PP.MaxValue:=69;
Application.CreateForm(TG, G);
MENU_PRINCIPAL.PP.Progress:=1;
g.tapariencia.Open;
MENU_PRINCIPAL.skin.SkinName:=g.tapariencia.Fields[0].Value;
MENU_PRINCIPAL.skin.HueOffset:=g.tapariencia.Fields[1].Value;
MENU_PRINCIPAL.skin.Saturation:=g.tapariencia.Fields[2].Value;
menu_principal.Skin.UpdateSkin;
g.tapariencia.close;
MENU_PRINCIPAL.PP.Progress:=2;
Application.CreateForm(TNueva_Empresa, Nueva_Empresa);
Application.CreateForm(TCatalogo_Empresas, Catalogo_Empresas);
MENU_PRINCIPAL.PP.Progress:=3;
Application.CreateForm(TCatalogo_Clientes, Catalogo_Clientes);
MENU_PRINCIPAL.PP.Progress:=4;
Application.CreateForm(TM, M);
MENU_PRINCIPAL.PP.Progress:=5;
Application.CreateForm(TNuevo_Clientes, Nuevo_Clientes);
MENU_PRINCIPAL.PP.Progress:=6;
Application.CreateForm(TCatalogo_Proveedores, Catalogo_Proveedores);
MENU_PRINCIPAL.PP.Progress:=7;
Application.CreateForm(TNueva_Proveedor, Nueva_Proveedor);
MENU_PRINCIPAL.PP.Progress:=8;
Application.CreateForm(TCatalogo_Productos, Catalogo_Productos);
MENU_PRINCIPAL.PP.Progress:=9;
Application.CreateForm(TNueva_Producto, Nueva_Producto);
MENU_PRINCIPAL.PP.Progress:=10;
Application.CreateForm(TCatalogo_Cuentas, Catalogo_Cuentas);
MENU_PRINCIPAL.PP.Progress:=11;
Application.CreateForm(TNueva_Cuenta, Nueva_Cuenta);
MENU_PRINCIPAL.PP.Progress:=12;
Application.CreateForm(TNuevo_Cheque, Nuevo_Cheque);
MENU_PRINCIPAL.PP.Progress:=13;
Application.CreateForm(TSeleccionar_Cuenta, Seleccionar_Cuenta);
MENU_PRINCIPAL.PP.Progress:=14;
Application.CreateForm(TSeleccionar_Proveedor, Seleccionar_Proveedor);
MENU_PRINCIPAL.PP.Progress:=15;
Application.CreateForm(TEntregar_Cheques, Entregar_Cheques);
MENU_PRINCIPAL.PP.Progress:=16;
Application.CreateForm(TCancelar_Cheque, Cancelar_Cheque);
MENU_PRINCIPAL.PP.Progress:=17;
Application.CreateForm(TConciliar_Cheque, Conciliar_Cheque);
MENU_PRINCIPAL.PP.Progress:=18;
Application.CreateForm(TConsultar_Cheque, Consultar_Cheque);
MENU_PRINCIPAL.PP.Progress:=19;
Application.CreateForm(TConsultar_ChequesPeriodo, Consultar_ChequesPeriodo);
MENU_PRINCIPAL.PP.Progress:=20;
Application.CreateForm(TNuevo_Deposito, Nuevo_Deposito);
MENU_PRINCIPAL.PP.Progress:=21;
Application.CreateForm(TNueva_Factura, Nueva_Factura);
MENU_PRINCIPAL.PP.Progress:=22;
Application.CreateForm(TSeleccionar_Cliente, Seleccionar_Cliente);
MENU_PRINCIPAL.PP.Progress:=23;
Application.CreateForm(TSeleccionar_Producto, Seleccionar_Producto);
MENU_PRINCIPAL.PP.Progress:=24;
Application.CreateForm(TCheque_Entregar, Cheque_Entregar);
MENU_PRINCIPAL.PP.Progress:=25;
Application.CreateForm(TCatalogo_Familias, Catalogo_Familias);
MENU_PRINCIPAL.PP.Progress:=26;
Application.CreateForm(TApariencia, Apariencia);
MENU_PRINCIPAL.PP.Progress:=27;
Application.CreateForm(TNueva_Familia, Nueva_Familia);
MENU_PRINCIPAL.PP.Progress:=28;
Application.CreateForm(TCatalogo_Marcas, Catalogo_Marcas);
MENU_PRINCIPAL.PP.Progress:=29;
Application.CreateForm(TCatalogo_Unidades, Catalogo_Unidades);
MENU_PRINCIPAL.PP.Progress:=30;
Application.CreateForm(TNueva_Unidad, Nueva_Unidad);
MENU_PRINCIPAL.PP.Progress:=31;
Application.CreateForm(TNueva_Marca, Nueva_Marca);
MENU_PRINCIPAL.PP.Progress:=32;
Application.CreateForm(TSeleccionar_Familia, Seleccionar_Familia);
MENU_PRINCIPAL.PP.Progress:=33;
Application.CreateForm(TSeleccionar_Marca, Seleccionar_Marca);
MENU_PRINCIPAL.PP.Progress:=34;
Application.CreateForm(TSeleccionar_Unidad, Seleccionar_Unidad);
MENU_PRINCIPAL.PP.Progress:=35;
Application.CreateForm(TConsultar_ChequesTransito, Consultar_ChequesTransito);
MENU_PRINCIPAL.PP.Progress:=36;
Application.CreateForm(TSeleccionar_ChequeConciliar, Seleccionar_ChequeConciliar);
MENU_PRINCIPAL.PP.Progress:=37;
Application.CreateForm(TCancelar_Factura, Cancelar_Factura);
MENU_PRINCIPAL.PP.Progress:=38;
Application.CreateForm(TEliminar_Facturas, Eliminar_Facturas);
MENU_PRINCIPAL.PP.Progress:=39;
Application.CreateForm(TConsultar_Factura, Consultar_Factura);
MENU_PRINCIPAL.PP.Progress:=40;
Application.CreateForm(TCancelar_Deposito, Cancelar_Deposito);
MENU_PRINCIPAL.PP.Progress:=41;
Application.CreateForm(TBanco_Estado, Banco_Estado);
MENU_PRINCIPAL.PP.Progress:=42;
Application.CreateForm(TConsultar_DepositoPeriodo, Consultar_DepositoPeriodo);
MENU_PRINCIPAL.PP.Progress:=43;
Application.CreateForm(TConsultar_Deposito, Consultar_Deposito);
MENU_PRINCIPAL.PP.Progress:=44;
Application.CreateForm(TMovimientos_Banco, Movimientos_Banco);
MENU_PRINCIPAL.PP.Progress:=45;
Application.CreateForm(TGrafica_facturado, Grafica_facturado);
MENU_PRINCIPAL.PP.Progress:=46;
Application.CreateForm(TConsulta_FacturasCliente, Consulta_FacturasCliente);
MENU_PRINCIPAL.PP.Progress:=47;
Application.CreateForm(TConsulta_FacturasNoPagadas, Consulta_FacturasNoPagadas);
MENU_PRINCIPAL.PP.Progress:=48;
Application.CreateForm(TConsulta_FacturasPagadasFecha, Consulta_FacturasPagadasFecha);
MENU_PRINCIPAL.PP.Progress:=49;
Application.CreateForm(TConsulta_FacturasDelPeriodo, Consulta_FacturasDelPeriodo);
MENU_PRINCIPAL.PP.Progress:=50;
Application.CreateForm(TConsulta_PrecioProductoCliente, Consulta_PrecioProductoCliente);
MENU_PRINCIPAL.PP.Progress:=51;
Application.CreateForm(TEspecial_Cargo, Especial_Cargo);
MENU_PRINCIPAL.PP.Progress:=52;
Application.CreateForm(TEspecial_Abono, Especial_Abono);
MENU_PRINCIPAL.PP.Progress:=53;
Application.CreateForm(TConsulta_FacturasPagadasPeriodo, Consulta_FacturasPagadasPeriodo);
MENU_PRINCIPAL.PP.Progress:=54;
Application.CreateForm(TConsultar_ChequesTodos, Consultar_ChequesTodos);
MENU_PRINCIPAL.PP.Progress:=55;
Application.CreateForm(TConsultar_ChequesProveedor, Consultar_ChequesProveedor);
MENU_PRINCIPAL.PP.Progress:=56;
Application.CreateForm(TConsultar_DepositosTodos, Consultar_DepositosTodos);
MENU_PRINCIPAL.PP.Progress:=57;
Application.CreateForm(TEstado_Cuenta, Estado_Cuenta);
MENU_PRINCIPAL.PP.Progress:=58;
Application.CreateForm(TConsultar_FacturasNopagaPerido, Consultar_FacturasNopagaPerido);
MENU_PRINCIPAL.PP.Progress:=59;
Application.CreateForm(TConciliar_Deposito, Conciliar_Deposito);
MENU_PRINCIPAL.PP.Progress:=60;
Application.CreateForm(TSeleccionar_DepositoConciliar, Seleccionar_DepositoConciliar);
MENU_PRINCIPAL.PP.Progress:=61;
Application.CreateForm(TFolios_Cheques, Folios_Cheques);
MENU_PRINCIPAL.PP.Progress:=62;
Application.CreateForm(TFolios_Facura, Folios_Facura);
MENU_PRINCIPAL.PP.Progress:=63;
Application.CreateForm(TConsultar_Facturaspagadas, Consultar_Facturaspagadas);
MENU_PRINCIPAL.PP.Progress:=64;
Application.CreateForm(TMensaje, Mensaje);
MENU_PRINCIPAL.PP.Progress:=65;
Application.CreateForm(TEliminar_Cheque, Eliminar_Cheque);
MENU_PRINCIPAL.PP.Progress:=66;
Application.CreateForm(TConsultar_TodasFacturas, Consultar_TodasFacturas);
MENU_PRINCIPAL.PP.Progress:=67;
Application.CreateForm(TProgres, Progres);
MENU_PRINCIPAL.PP.Progress:=68;
Application.CreateForm(TConsultar_ChequesProveedorPeriodo, Consultar_ChequesProveedorPeriodo);
MENU_PRINCIPAL.PP.Progress:=69;
MENU_PRINCIPAL.PP.Progress:=0;
MENU_PRINCIPAL.PP.Visible:=FALSE;
MENU_PRINCIPAL.SIS.Caption:='Listo !';
Application.Run;
Creas todos los form's, que esperas si no es lentitud.
Un arrenque optimo seria este:
Código Delphi
[-]
Application.Initialize;
Application.CreateForm(TG, G);
Application.CreateForm(TM, M);
Application.CreateForm(TMenu_Principal, Menu_Principal);
Application.Title := 'Administración';
Application.Run;
Hay mucha diferencia, porque no lo puedes hacer asi, muy simple, haces el llamado del form asi:
Código Delphi
[-]
Catalogo_Empresas.showmodal;
Cuando lo optimo es asi:
Código Delphi
[-]
Catalogo_Empresas:=TCatalogo_Empresas.Create(self);
try
Catalogo_Empresas.ShowModal;
finally
Catalogo_Empresas.Free;
end;
Lo creo y destruyo cuando lo necesito, ahorrando recursos, memoria.
Me ha sido muy dificil entender el programa, sobre todo por no tener los componentes que usas para el mismo.
Recomendaciones:
1-Modifica el archivo inicial: Administracion.
2-Haz un llamado a los form, como endique.
de momento no me sinto capaz de modificar la conexion por ini, asi que te recomiendo que sigas igual, creo que con solo los dos cambios que propongo, la velocidad de acceso mejorara.
Espero te sirva esto.
saludos