Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Mi programa de facturación paso a paso (https://www.clubdelphi.com/foros/showthread.php?t=36433)

Delphitest 11-10-2006 18:10:18

Mi programa de facturación paso a paso
 
Bueno, pues tras mis breves preguntas de ayer acerca de como y por donde empezar la programación de una aplicación de facturación, he decidido empezar cuanto antes con el Dephi 7.

Antes de nada quiero agradecer a las personas que me han echado una mano con las dudas iniciales y me han animado a empezar con esta dura tarea.

Con el permiso del moderador del foro me gustaría abrir este hilo con ánimo de ir comentando mis progresos y dudas que irán surgiendo a lo largo de este proyecto. Lo he colocado en Varios, espero que sea el sitio correcto.

Antes de empezar con la programación he pensado que me vendría bien hacer un pequeño "esquema" de lo que quiero, y así lo he hecho. Ya tengo mas o menos claro los menús que necesito y los datos que tengo que mover.

Desde luego que información no falta en internet, ya me he puesto con manuales que me habeis recomendado y he realizado muchas busquedas desde Google para intentar solucionar una dudas iniciales sin tener que molestar demasiado a los foreros.

El resultado ?? pues ya tengo el menú principal creado con las opciones dentro de cada uno. Ya se que sobre la marcha es posible que me toque cambiarlas pero siempre tiene que haber un principio. He empezado por algo muy sencillo y ademas, que quede entre nosotros, la he cagado ya dos veces y me ha tocado empezar de nuevo, pero bueno, la tercera vez que he tenido que crear el menú ya lo hacia casi sin tener que pensar :)

Ya tengo mi primera duda, y no penseis que no he buscado antes de preguntar. He visto que a través de esto (no se si se llama orden o función):

if MessageDlg('¿ Seguro que desea salir del programa ?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then


consigo que al pulsar sobre el botón de salir me aparezca un recuadro de confirmación, lo cual es una muy buena opción que quiero incorporar.

Problema; que aparece Yes y No en lugar de aparecer en castellano. He visto en este foro comentarios acerca de este problema y según veo tendría que meter unos recursos de idioma, supongo que seran una librerías o algo parecido. Mi duda es que no se de donde sacar esos recursos, he recurrido a una página de argentina que ponía un forero y buscado en google pero no doy con ello.

¿Me podría poner alguien un link o algun tipo de información que me ayude a conseguirlos?

Gracias a todos por adelantado, espero que mi experiencia tambien sirva a otras personas y puedan sacarle provecho.

Me gustaría ir subiendo los archivos de lo que hago a medida que avance para que los aproveche quien los necesite o los critique quien lo vea conveniente, ¿puedo hacerlo en .zip por ej o recargaría demasiado el foro?

Un abrazo.

Caral 11-10-2006 18:29:04

Hola
En Español:
Código Delphi [-]
 MessageBox(Handle,
             PChar('¿ Seguro que desea salir del programa ?'),
             PChar(''),
             MB_OKCANCEL + MB_DEFBUTTON1 + MB_APPLMODAL);
Por lo menos a mi me sale asi, no se si tendra que ver que uso XP en Español.
Saludos

dec 11-10-2006 18:38:23

Hola,

Un enlace con los recursos traducidos e instrucciones de instalación.

Respecto de lo de subir archivos... por el momento, si no ocupan más de 30 KB comprimidos (no creas, cabe mucho en 30 KB comprimidos) puedes adjuntarlos a cualquiera de tus mensajes en los Foros.

Si ocupan más podrías utilizar algún servicio similar a RapidShare.de y subir los archivos allí y proporcionarnos la URL que ellos te proporcionen a ti.

Cita:

Empezado por Caral
Por lo menos a mi me sale asi, no se si tendra que ver que uso XP en Español.
Saludos

De la manera en que tú lo haces, efectivamente, parece que se cogen los recursos del propio sistema y se muestran los botones conforme a estos.

Caral 11-10-2006 18:43:49

La verdad Dec es que soy un perezoso y uso un programa para hacer estos mensajes, los hace muy rapido y con valores de retorno si quiero, If , Case Of etc... esta practico para el principiante como yo va bien.
Saludos

dec 11-10-2006 18:50:02

Hola,

¿Cuál usas? ¿El que viene con las herramientas de GExperts?

Ñuño Martínez 11-10-2006 18:54:15

Cita:

Empezado por Delphitest
Bueno, pues tras mis breves preguntas de ayer acerca de como y por donde empezar la programación de una aplicación de facturación, he decidido empezar cuanto antes con el Dephi 7.

No es por malmeter pero, ¿por qué no has empezado con Turbo Delphi, que es bastante más barato? Por lo que sé es muy similar al Delphi "de toda la vida" (fijate que ni nombro Lázarus para evitar liarte más ;) ). En fin, suerte.

Cita:

Empezado por Delphitest
Antes de empezar con la programación he pensado que me vendría bien hacer un pequeño "esquema" de lo que quiero, y así lo he hecho. Ya tengo mas o menos claro los menús que necesito y los datos que tengo que mover.

Una magnífica idea que la mayora parte de los programadores olvidamos. Y un consejito: haz también diagramas de flujo. Te diría que los hicieras todos ya, antes de empezar a codificar, pero como los programadores somos impacientes por naturaleza, te pediré que los hagas cuando no tengas claro qué hacer.

Lo ideal sería hacer un diagrama de flujo por procedimiento, función o método. Cuando hagas el diagrama no vayas al detalle, en vez de eso haz un diagrama general aunque no sepas cómo hacer todo. Luego, haz otro diagrama de flujo por cada parte del diagrama que no sepas como hacerlo diréctamente.

¡Ah! Y haz los diagramas en papel y con un bolígrafo o lapicero, nunca con un programa de dibujo: es mucho mejor. Lo digo por experiencia.

Cita:

Empezado por Delphitest
Ya tengo mi primera duda (...) (no se si se llama orden o función):

if MessageDlg('¿ Seguro que desea salir del programa ?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then

Deberías aprender a usar las etiquetas [code] y [delphi]. Así, el trozo de código que has puesto se verá:
Código Delphi [-]
  if MessageDlg('¿ Seguro que desea salir del programa ?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then

Y esto es una sentencia, llamada condicional que incluye una función cuyo nombre es MessageDlg...


Cita:

Empezado por Delphitest
Me gustaría ir subiendo los archivos de lo que hago a medida que avance para que los aproveche quien los necesite o los critique quien lo vea conveniente, ¿puedo hacerlo en .zip por ej o recargaría demasiado el foro?

No subas código, a menos que sea para ilustrar una pregunta. Si alguien quiere verlo que lo pida y se lo envías por correo. Creo que es la mejor solución.

Caral 11-10-2006 19:04:34

No Dec. El de GExprert lo tengo tambien, en una consulta me lo indico Roman, pero me resulta mas engorroso, no se la verdad talvez no le he puesto cuidado.
El que uso se llama Constructor es muy pequeño y facil de usar.
Saludos

Delphitest 11-10-2006 19:07:50

Perfecto Dec,

Ya lo he descargado y seguido los pasos, funciona a la perfección, ya aparecen los textos en español.

Acabo de preparar el ZIP con lo que tengo hecho, me ha costado enterarme de que archivos tenía que comprimir, por lo que veo el que mas ocupa lo genera de nuevo Delphi al abrir el proyecto por lo tanto no es necesario incluirlo.

Iba a subirlo pero por lo que comenta Nuño es mejor no hacerlo, lo que veais, no tiene ningún secreto, cuando empiece a tener algun dato que quiera ocultar procuraré omitirlo en los ficheros que suba.

Bueno, lo tengo preparado, si hay que subirlo se sube y sino el que lo quiera que me lo pida.

Gracias por vuestra ayuda, mañana empiezo con las fichas de los clientes, ya estoy temblando :o

Delphitest 11-10-2006 19:26:35

1 Archivos Adjunto(s)
Iba a subir un pantallazo pero casi me cuesta menos meter todo los archivos en un .zip, visto que por ahora no tiene mucho que ver os lo adjunto a este mensaje por si quereis echarle un vistazo y decirme si voy por buen camino o ya empiezo a cojear en algo.

Lo he llamado Gesatrans (Gestion agencia de transporte)

Por ahora solo tiene un menu con la opciones que he visto suficiente y únicamente funcionan las opciones Salir de gesatrans.... (Ficheros) y Calculadora (Herramientas)

El próximo objetivo como digo por encima es la opción clientes, seguro que esta va para largo ...

Caral 11-10-2006 19:53:00

Hola
Quieres un pedacito de codigo para mantenimiento de Clientes ?
Bueno este vas a tener que modificarlo, pero te serviria de ejemplo.
Saludos

Delphitest 11-10-2006 20:12:28

Por supuesto :)

todo me puede venir bien.

Ya ando estudiando el tema de las bases de datos y por ahora empiezo con Paradox, espero que no sea mala elección.

Por hoy lo dejo ya, no se cuantas horas llevo entre tutoriales, trucos, ejemplos ... :)

Aunque mis primeras lecciones han cundido mas de lo que yo contaba, ya veremos cuando se empiece esto a complicar.

Buenas noches a todos

Caral 11-10-2006 21:04:46

Bueno este es hecho con conexion ado y motor Access (de 1 Hp).:D
Este es el codigo, ya se que es pequeño pero por algo hay que empezar:
Código Delphi [-]
unit UFClientes;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UDM1, ExtCtrls, StdCtrls, Mask, DBCtrls, ComCtrls, DB, ADODB,
  Buttons;

type
  TFClientes = class(TForm)
    TClientes: TADOTable;
    TClientesCodCliente: TIntegerField;
    TClientesNombreCliente: TWideStringField;
    TClientesDireccion1: TWideStringField;
    TClientesDireccion2: TWideStringField;
    TClientesPais: TWideStringField;
    TClientesProvincia: TWideStringField;
    TClientesCanton: TWideStringField;
    TClientesApartado: TWideStringField;
    TClientesContacto: TWideStringField;
    TClientesTelefono: TWideStringField;
    TClientesExtencion: TWideStringField;
    TClientesFax: TWideStringField;
    TClientesEmail: TWideStringField;
    TClientesNoEnvEmail: TBooleanField;
    TClientesTerminos: TWideStringField;
    TClientesVendedor: TWideStringField;
    TClientesSuspendido: TBooleanField;
    TClientesExcento: TBooleanField;
    TClientesFechaIngreso: TDateTimeField;
    TClientesLimiteCredito: TFloatField;
    TClientesNotas: TMemoField;
    DSClientes: TDataSource;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Label1: TLabel;
    Panel1: TPanel;
    DBEdit2: TDBEdit;
    Label2: TLabel;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    Label5: TLabel;
    DBEdit5: TDBEdit;
    Label6: TLabel;
    DBEdit6: TDBEdit;
    TClientesDistrito: TWideStringField;
    Label7: TLabel;
    DBEdit7: TDBEdit;
    Label8: TLabel;
    DBEdit8: TDBEdit;
    Panel2: TPanel;
    Label4: TLabel;
    DBEdit9: TDBEdit;
    Label9: TLabel;
    DBEdit10: TDBEdit;
    Label10: TLabel;
    DBEdit11: TDBEdit;
    Label11: TLabel;
    DBEdit12: TDBEdit;
    Label12: TLabel;
    DBEdit13: TDBEdit;
    Panel3: TPanel;
    Label13: TLabel;
    DBEdit14: TDBEdit;
    Label14: TLabel;
    DBLookupComboBox1: TDBLookupComboBox;
    TUsuarios: TADOTable;
    DSUsuarios: TDataSource;
    Label16: TLabel;
    Panel4: TPanel;
    DBCheckBox1: TDBCheckBox;
    DBCheckBox2: TDBCheckBox;
    DBCheckBox3: TDBCheckBox;
    Panel5: TPanel;
    DBMemo1: TDBMemo;
    DBNavigator1: TDBNavigator;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    QTemp: TADOQuery;
    DBText1: TDBText;
    Label15: TLabel;
    BitBtn3: TBitBtn;
    TClientesCatPrecio: TWordField;
    Label17: TLabel;
    DBComboBox1: TDBComboBox;
    TClientesDiasCredito: TSmallintField;
    Label18: TLabel;
    Panel6: TPanel;
    Label20: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    DBEdit15: TDBEdit;
    Label21: TLabel;
    Label19: TLabel;
    DBEdit1: TDBEdit;
    BitBtn4: TBitBtn;
    Edit3: TEdit;
    Label22: TLabel;
    DBEdit16: TDBEdit;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure TClientesAfterInsert(DataSet: TDataSet);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure Edit3Exit(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure DBEdit2Change(Sender: TObject);
    procedure DBEdit16Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FClientes: TFClientes;

implementation

uses UFBuscaCliente;

{$R *.dfm}

procedure TFClientes.BitBtn1Click(Sender: TObject);
begin
   If (TClientes.State = dsEdit) or (TClientes.State = dsInsert) then
      DBEdit16.Text := DateToStr(now);
      TClientes.Post;
   Close;
end;

procedure TFClientes.BitBtn2Click(Sender: TObject);
begin
   Close;
end;

procedure TFClientes.TClientesAfterInsert(DataSet: TDataSet);
begin
   QTemp.SQL.Text := 'Select Max(CodCliente) From Clientes';
   QTemp.Active := true;
   DBText1.Field.AsInteger := QTemp.Fields[0].AsInteger+1;
   QTemp.Active :=False;
   DBCheckBox1.Field.AsBoolean := False;
   DBCheckBox2.Field.AsBoolean := False;
   DBCheckBox3.Field.AsBoolean := False;
   DBEdit15.Field.AsString     := '0';
end;

procedure TFClientes.FormCreate(Sender: TObject);
begin
   TClientes.Active := True;
   TUsuarios.Active := True;
   Panel6.Visible := False;
end;

procedure TFClientes.FormDestroy(Sender: TObject);
begin
   TClientes.Active := False;
   TUsuarios.Active := False;
end;

procedure TFClientes.BitBtn3Click(Sender: TObject);
begin
   FBuscaCliente:=TFBuscaCliente.Create(self);
   try
      FBuscaCliente.ShowModal;
   finally
      If FBuscaCliente.Cod_Cliente <> '' then
         TClientes.Locate('codcliente',QuotedStr(FBuscaCliente.Cod_Cliente),[]);
      FBuscaCliente.Free;
   end;
end;

procedure TFClientes.Edit2Exit(Sender: TObject);
begin
   If Edit2.Text > '200000.00' then
   begin
   MessageBox(Handle,
             PChar('Para Poner ese limite de Credito' + #13#10 +
                   'Necesita Autorizacion'),
             PChar('Limite de Credito'),
             MB_OK + MB_DEFBUTTON1 + MB_APPLMODAL);
   Edit2.Text:= '0';
   DBEdit15.Text := Edit2.Text;
end;
end;

procedure TFClientes.Button1Click(Sender: TObject);
begin
   if Edit1.Text = 'carorl' then
   begin
   DBEdit15.ReadOnly := False;
   DBEdit1.ReadOnly := False;
   DBCheckBox1.Enabled := True;
  end
   else
   Panel6.Visible := False;
   Edit1.Text := '';
end;

procedure TFClientes.BitBtn4Click(Sender: TObject);
begin
  Panel6.Visible := True;
end;

procedure TFClientes.Edit3Exit(Sender: TObject);
begin
    MessageBox(Handle,
             PChar('Para modificar los DIAS de Credito' + #13#10 +
                   '      Necesita Autorizacion'  + #13#10 +
                   '   Deje Este Espacio en Blanco ' + #13#10 +
                   'Para Compras o Clientes de CONTADO'),
             PChar('DIAS de Credito'),
             MB_OK + MB_DEFBUTTON1 + MB_APPLMODAL);
     Edit3.Text := '0';
end;

procedure TFClientes.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
   Edit2.Text:= DBEdit15.Text;
   Edit3.Text:= DBEdit1.Text;
end;

procedure TFClientes.DBEdit2Change(Sender: TObject);
begin
   Edit2.Text:= DBEdit15.Text;
   Edit3.Text:= DBEdit1.Text;
end;

procedure TFClientes.DBEdit16Click(Sender: TObject);
begin
     MessageBox(Handle,
             PChar('NO Necesita colocar la Fecha ' + #13#10 +
                   ' Se colocara automaticamente'),
             PChar('MENSAJE'),
             MB_OK + MB_DEFBUTTON1 + MB_APPLMODAL);
end;

end.
Por supuesto vas a tener que cambiar los nombres de las tablas etc. pero es una manera de ver un programa que hace lo que quieres.
Espero te sirva, es el principio, ya se .:D :D
Saludos

Delphitest 13-10-2006 08:47:09

Muchas gracias Caral por facilitarme el código,

de momento me suena todo un poco a chino, lo que he hecho es copiarlo al bloc de notas e imprimirlo, asi voy aislando lo que voy entiendo y poniendo comentarios de lo que hace.

Ayer me lo tomé libre por el día festivo pero ya estoy de nuevo con ello. Parece que esto de las BD me va a costar un poco y ya temo llegar a la parte de las facturas pero no pierdo el animo.

Os mantendré informados sobre mi evolución

gracias de nuevo por vuestra ayuda.

Un saludo y que tengais buen día

Delphitest 13-10-2006 13:08:14

1 Archivos Adjunto(s)
Hola de nuevo Caral,

te importaría poner un pantallazo de la ficha de clientes, es para ver los objetos que hay en ella e intentar entender algo mejor el código.

por mi parte ya he hecho una ficha pero reconozco que me está costando entender alguna cosa.

Por ahora, os pongo lo que tengo.

He creado a través del Data Bases Desktop una tabla llamada clientes (no la ando subiendo pq es muy sencilla, si alguien la quiere que me la pida).

Como campos claves he puesto el código de cliente y el dni, el resto de datos son los tipicos ... solo un detalle para el campo código y es que lo he puesto para que se autoincremente (asi a parte de ser único se rellena solo)

No lo sabía pero sobre la marcha he visto que tengo que crear otro Form para la ficha del cliente, casi mejor asi lo tengo de forma independiente y quizas me sirva para otros programas. En lugar de Unit2 lo he renombrado a clientes, suena mejor ;)

Veo que no es demasiado dificil por ahora hacer lo "gordo" ya que hay objetos que simplifican las tareas, pero claro, en cuanto quiere uno hacer algo mas pues ya llegan las dudas.

Para la base de datos he tenido que insertar en el Form los compomentes Table y DataSource, parece que con eso ya se indica donde está la base de datos y el nombre de la tabla.

Despues para el diseño he recurrido a los "Data Controls" y a simples etiquetas de texto para las cabeceras de las lineas.

He insertado una historia muy cómoda que se encarga de todos los controles de la tabla (insertar, borrar ...) menudo ahorro de tiempo, pensaba que todo eso lo tenía que hacer a mano con botones independientes :)

Por cierto, este form lo muestro al pulsar la opción Ficheros/Clientes.

Ahora voy con alguna duda a ver si me podeis echar una mano:

- Por defecto todos los campos que he añadido con DBEdit son editables directamente sin hacer nada, eso tiene su peligro y ademas he visto que en los controles existe una flecha que supuestamente es para editar el registro. ¿Hay alguna forma de hacer que los campos no se dejen modificar mientras no pulse ese boton edit o es mejor dejarlo asi ?

- A la hora de crear la ficha inevitablemente he ido poniendo los campos a mi aire, lo que hace que ahora al rellenar la ficha siga el orden de creación y no el que aparece en la pantalla, o sea que salta de Nombre comercial a Codigo postal y cosas de esas, ¿para solucionarlo es necesario respetar el orden a la hora de crearlo o puedo cambiarlo ahora que ya está hecho?

En cuanto solucione esto paso a la siguiente fase, gracias a todos de nuevo.

Delphitest 13-10-2006 15:47:47

La segunda duda ya está solucionada, he encontrado que pulsando en el Form de clientes con el boton derecho del ratón aparece una opción llamaba Tab Order y que permite indicar el orden de los campos a la hora de saltar con la tecla TAB.

un problema menos ...

Paoti 13-10-2006 17:05:38

Hola Delphitest.



¡Adivina que!



Hay un sistemita en sourceforge, que es un punto de venta, creado con Delphi y firebird, lamentablemente no puedo ponderte el link, ya que tengo restringida esa página en mi trabajo.


pero entra en sourceforge.net busca "punto de venta" delphi.


y te tiene que treaer esa aplicación, con la cual la curva de aprendizaje que requieras va a ser menos.



Saludos del Paoti.

Caral 13-10-2006 17:39:27

Hola
Vas bien, en realidad son los primeros pasos, pero poco a poco se llega.
Tienes una pantalla normal, el caso es que en esta puedes editar, insertar,borrar, etc. de la tabla clientes, ya que pusiste en el from un DBNavigator, bueno luego veras otras maneras de hacer lo mismo, por ahora continua con lo que tienes.
Hay que pensar en, que hara el que use la pantalla:
Bueno, al iniciarla se mostrara el primer cliente que pusiste.
? Que pasa si quieres buscar un cliente en especial, pues con las flechas del dbnavigator tendras que recorer la tabla hasta llegar al que buscas, solucion, hacer un flitro, sea por codido o nombre comercial, como ? asi:
El componente que enlaza tu tabla debe terner un nombre, puede ser table1 u otro, este es el nombre que vas a poner en este codigo:
Supongamos que el campo codigo es el DBEdit1, Bueno filtraremos por codigo los clientes asi:
En el evento OnChange del DBEdit1, pondras este codigo, con el nombre de la tabla que tienes, yo le he puesto table1:
Código Delphi [-]
var
   Filtro : String;
begin
   If (DBEdit1.Text <> '') then
   begin
      Table1.Filtered := False;
      Filtro := 'Codigo Like '+DBEdit1.Text;
      Table1.Filter := Filtro;
      Table1.Filtered := True
   end
   else Table1.Filtered := False;
end;
Cada vez que cambies el numero de codigo, este filtrara la tabla y regresara los datos, esto mismo se puede hacer con el nombre comercial etc.
Con este paso solo trato de hacerte ver que el programa tiene que ofrecer varias alternativas de uso y que son realmente faciles de progamar.
Cuando quieras vamos a por otro, vas bien.:D
Saludos

Caral 13-10-2006 17:53:40

Hola
Con respecto a esto:
Cita:

Por defecto todos los campos que he añadido con DBEdit son editables directamente sin hacer nada, eso tiene su peligro y ademas he visto que en los controles existe una flecha que supuestamente es para editar el registro. ¿Hay alguna forma de hacer que los campos no se dejen modificar mientras no pulse ese boton edit o es mejor dejarlo asi ?
Cuando usas un DBNavegator esto sucede se pone en modo edicion en cuanto se toca un dbedit, no es conveniente, ya te esplicare como eliminar el dbnavegator, por ahora una a una.
Necesito saber que motor de base de datos usas y los nombres de los componentes que as puesto, asi te voy dando el dato correcto.
Prefiero que se pones la pntalla sea en modo diseño, he tratado de poner la mia pero es de 830k no se puede.
Saludos

Delphitest 13-10-2006 18:37:22

1 Archivos Adjunto(s)
Adjunto lo último y completo (con BD) para que veais por donde voy.

Ando buscando una alternativa para subir los archivos y poneros solo un link, mas que nada para no sobrecargar el foro (supongo que a muchos no les parecerá bien que ponga estas cosas tan sencillas), seguro que encuentro algo para la semana que viene en algun servidor.

Muchas gracias de nuevo a los que me estais auydando, asi da gusto ;)

Esto de la busqueda que indicas Caral había pensado poner un botón que me lleve a una ventana de buscar pero todavía busco la forma. He probado con lo que me pones y no consigo hacerlo funcionar, he sustituido el campo codigo por el del nombre comercial, no se si tendrá algo que ver la longitud y el tipo, el caso es que el error que da es que no encuentra la cadena que busca, pero si que está ...

La verdad es que hoy me duele un poco la cabeza, no veas las vueltas que le estoy dando :rolleyes: . Tengo varios codigos fuentes que me habeis estado pasando, tutoriales, articulos ... me sale humo del craneo.

Buen fin de semana a todos, a ver si mañana o el lunes estoy mas despejado y consigo avanzar :)

Delphitest 16-10-2006 18:28:15

Buenas tardes a tod@s,

os cuento por donde voy en este momento.

En primer lugar para no ocupar espacio en el foro voy a subir los ficheros a través de rapidshare, lo ultimo que tengo hecho está aquí:

http://rapidshare.de/files/36976866/Gesatrans.zip.html

- He añadido un campo F_Pago a la base de datos, se me había pasado y creo que lo voy a necesitar. Para mostrarlo en el Form he utilizado el DBComboBox que parecía el mas apropiado.

- Recorriendo foros y articulos he encontrado la forma (muy sencilla por cierto) para que el usuario no pueda cambiar el tamaño de la ventana, solo lo he aplicado a Clientes añadiendo este código en el evento OnCreate:

Código:

procedure TForm2.FormCreate(Sender: TObject);
begin
  Constraints.Minheight := Height;
  Constraints.Maxheight := Height;
  Constraints.Minwidth := Width;
  Constraints.Maxwidth := Width;
end;

- Por otra parte, y esto es lo que me está empezando a traer de cabeza, necesito un sistema sencillo pero completo de busqueda que me permita localizar un cliente por su razon social o nombre comercial, pero con algo que haga la comprobación de "contiene" sin necesidad de que coincida al 100% con el contenido del campo. Solo he conseguido de forma muy sencilla buscar a traves del código de cliente, que resulta ser el campo clave de la BD, ha sido con esto creando un botón y metiendo este código en el evento onClick:

Código:

procedure TForm2.BitBtn1Click(Sender: TObject);
var Buscar:Integer;
begin
Buscar:=strtoint(inputbox('Buscar Cliente','Indique el código de cliente','1'));
if Not Table1.FindKey([Buscar]) then
messagedlg('Código inexistente',mtConfirmation,[mbok],0);
end;

¿Se os ocurre algo para lo que necesito de la busqueda ?
(si se resolviese dentro de este mismo form sería lo mejor ;) )

Hasta aquí he dado de sí hoy, por cierto Caral, he probado lo que ponías par buscar pero no hay manera, no lo hago funcionar y me da errores que no consigo solucionar.

Hasta la próxima y gracias :)

maeyanes 16-10-2006 18:43:39

Cita:

Empezado por Delphitest

- Recorriendo foros y articulos he encontrado la forma (muy sencilla por cierto) para que el usuario no pueda cambiar el tamaño de la ventana, solo lo he aplicado a Clientes añadiendo este código en el evento OnCreate:

Esto mismo lo puedes lograr estableciendo la propiedad BorderStyle de la forma en bsSingle.

Cita:

- Por otra parte, y esto es lo que me está empezando a traer de cabeza, necesito un sistema sencillo pero completo de busqueda que me permita localizar un cliente por su razon social o nombre comercial, pero con algo que haga la comprobación de "contiene" sin necesidad de que coincida al 100% con el contenido del campo. Solo he conseguido de forma muy sencilla buscar a traves del código de cliente, que resulta ser el campo clave de la BD, ha sido con esto creando un botón y metiendo este código en el evento onClick:

...

¿Se os ocurre algo para lo que necesito de la busqueda ?
(si se resolviese dentro de este mismo form sería lo mejor ;) )
Tienes varias opciones, una es el método Locate de TTable, busca en la ayuda de Delphi para más información...

Otra opción sería mediante un query LIKE, algo como:

Código SQL [-]
SELECT * FROM Tabla WHERE Campo like '%texto%';



Saludos...

AzidRain 16-10-2006 23:12:37

Creo que llego tarde al hilo pero espero que mis comentarios te sirvan.

Yo tb estoy desarrollando una aplicacion gestión de transporte solo que para el mercado mexicano, aunque en teoría es muy similar cualquier otro país.

Creo que antes que escribir el primer begin debiste haber hecho un análisis a detalle de lo que quieres hacer:

1.-Va a servir para cualquiera, para algunos cuantos clientes tuyos o solo para uno.
2.- Correrá en un solo equipo o distribuido en redes
3.- Con acceso a datos via internet o no
4.- Como vas a imprimir los reportes (Quick Report, FR, Rave, etc.)
5.- Si la impresión de las facturas será en matriciales, ya tienes lo necesario para manejarlas (no nada mas es crear un reporte y ya)
6.- Que ofrecerá tu sistema (o tu creatividad) que no ofrezca ya algún otro en el mercado (por ejemplo facturalux)
7.- En que tiempo (razonable) lo quieres terminar
8.- Lo haras tu solo o en equipo (por aquello de los CVS)

Una vez hecho lo anterior, hay que definir que tipo de base datos usar:

1.- Tablas Planas (Paradox)
2.- Firebird, MySQL o Postgress (y tb que componentes: ADO, Zeos, etc.)
3.- Interbase
4.- MS-SQL Server

Hasta aqui ya es un buen de trabajo y todavía no sale el código. Pero viene lo bueno: El análisis del sistema en si, en donde tendrás que usar por lo menos diagramas de flujo sencillos y para el caso de que uses bases de datos, tendrás que preparar tu modelo E-R y sus correspondientes diagramas.

Faltaría pensar en el diseño de la Interfase de usuario (si vas a usar estilo Office, MDI, etc.) para que tu programa sea consistente, es decir, se vea igual en cualquier parte y no "parchado".

Bueno y todo esto para que: Pues para que cuando empieces con el código todo sea coser y cantar, solamente trasladar lo que ya razonaste previamente a la forma como quieres que tu programa lo ejecute. Esto te evitará tener que reescribir código o re-diseñar las tablas porque a medio programa te diste cuenta que te hace falta un campo o cambiar algún tipo de datos.

Todo esto te permitirá tener una aplicación sólida, fácil de mantener y sobre todo fácil de hacerla crecer.

Antes a mi me pasaba la clásica "impaciencia de programador" y empezaba a programar solo con la idea principal, excuso decirte los dolores de cabeza que me creaba yo solo y sobre todo cuando tenía que volver a código de hace 1 o 2 años...


Tengo ya algo avanzado, si te intesa podemos ir desarrollando los pasos en algun hilo o en este mismo para que sirva de tutorial para quien lo desee o bien solo para intercambiar opiniones.

Saludos

Delphitest 17-10-2006 07:13:53

Buenos días,

gracias Marcos por tus comentarios, anda que no enterarme antes de la propiedad BorderStyle tiene delito :( , logicamente he optado por retirar esas líneas que tenía de código y hacer esto que dices, algo mas que tengo aprendido.

Para la busquedad estoy pensando en optar por el uso de Locate, otra cosa es que de con ello, la verdad es que la ayuda de delphi no me está sirviendo para esto. Espero que a través de ejemplos que encuentro por ahí en los foros de con algo que me ayude a solucionarlo, en ello ando todavía y cada minuto con un nuevo error, menos mal que antes de hacer modificaciones me he acostumbrado a hacer copias de seguridad de todo.

AzidRain, antes de empezar si que he hecho un "esquema" intentando tener claro lo que necesito realmente y mas que nada por el tema de las bases de datos y campos necesarios.

Gracias a tus palabras he descubierto que estoy trabajando con tablas planas, te contesto por encima a esas cosillas:

Cita:

1.-Va a servir para cualquiera, para algunos cuantos clientes tuyos o solo para uno.
Realmente soy el propio cliente, es un programa para uso propio.

Cita:

2.- Correrá en un solo equipo o distribuido en redes
Inicialmente en un solo equipo, a la larga quizas interese que funcione en red, pero no es algo que necesite por ahora.

Cita:

3.- Con acceso a datos via internet o no
Esto ya lo tengo claro, no tendrá acceso via intenet.

Cita:

4.- Como vas a imprimir los reportes (Quick Report, FR, Rave, etc.)
Tendré que mirar lo que mas facil me resulte de hacer, no he llegado a este apartado todavía y la verdad no se que diferencias hay.


Cita:

5.- Si la impresión de las facturas será en matriciales, ya tienes lo necesario para manejarlas (no nada mas es crear un reporte y ya)
La impresion es en laser

Cita:

6.- Que ofrecerá tu sistema (o tu creatividad) que no ofrezca ya algún otro en el mercado (por ejemplo facturalux)
Es un programa totalmente a medida, algunas partes si servirán para cualquier otro programa de facturacion, pero en general quiero algo que se adapte a las tareas que hacemos a diario no algo generico.

Cita:

7.- En que tiempo (razonable) lo quieres terminar
Como se suele decir, sin prisa pero sin pausa. No tengo plazo en mente pero considero que 3 meses sería razonable aunque luego necesite algun retoque sobre la marcha.

Cita:

8.- Lo haras tu solo o en equipo (por aquello de los CVS)
Por desgracia yo solo, aunque cualquier mano amiga será bienvenida ;)

Cita:

Tengo ya algo avanzado, si te intesa podemos ir desarrollando los pasos en algun hilo o en este mismo para que sirva de tutorial para quien lo desee o bien solo para intercambiar opiniones.
Es la idea inicial de este hilo, si, por supuesto que me interesa compartir la experiencia aunque ni nivel es realmente bajo pero por falta de interés y trabajo que no quede, le hecho muchas horas y empeño, no lo hago por diversión sino por necesidad y eso me motiva bastante y me obliga a tirar para adelante.


Que tengais un buen día :)

Delphitest 17-10-2006 09:47:39

Lo tengo casi pero ....


He creado un Form3 para la busqueda y tengo una pequeña duda, bueno dos:

He apañado el código que amablemente me ha facilitado Caral:


Código:


procedure TForm3.Edit1Change(Sender: TObject);
var
  Filtro : String;
begin
  If (Edit1.Text <> '') then
  begin
      Table1.Filtered := False;
      Filtro := 'Nombre_Cial ='+QuotedStr(Edit1.Text);
      Table1.Filter := Filtro;
      Table1.Filtered := True
  end
  else Table1.Filtered := False;
end;

Y con ello consigo realizar una busqueda o filtro de un DBGrid que he puesto, la gran pregunta es:

El operador "=" requiere que mi texto de busqueda sea identico al del campo "Nombre_Cial" pero prefiero que coincidan los primeros caracteres a medida que los escribo, he probado con Like y no lo reconoce supongo que es por el motor de bases de datos que uso.

¿Que operador puedo poner para que funcione?

Tambien he probado añadiendo un +'*' detras de (Edit1.Text) pero tampoco funciona.

Por otro lado no acabo de entender esto de trabajar con diferentes Form, veo que son totalmente independientes por defecto, o sea que en este último he tenido de nuevo que indicar DataSource y Table y cuando selecciono en el DBGrid el registro que me interesa no me lo tiene en cuenta en el Form2 (que es el de clientes). Supongo que esto será algo sencillo pero lo desconozco por el momento.

Gracias de nuevo por vuestra ayuda

Lepe 17-10-2006 10:11:28

La propiedad Filter no admite comodines, aunque existen trucos, es bastante incómodo, resulta más eficiente una consulta (TQuery).

Respondiendo antes a tu segunda pregunta:
Existen los TDatamodules, que son contenedores de objetos no visuales, es decir, no puedes situar un Edit, pero si un TTable, TDatasource, etc. La idea consiste en Crear un TDatamodule, al guardarlo le das el nombre a la unidad (dmClientes) y a la ventana del Datamodule, en su propiedad Name indicas DTMClientes.

Sitúas la tabla clientes y su TDataSource en dicho datamodule y si lo necesitas en el Form1 y Form2, haces lo sigueinte:

Código Delphi [-]
Unit Unit1; // este es el Form1

interface
  uses windows, messages, etc.... , DmClientes;
...
Cuando en Form1, en el Inspector de Objetos eliges el DBGrid.DataSource, si apararece el DataSource de Clientes para elegirlo.

Hecho esto, puedes situar un TQuery en dicho Datamodule (qryClientes), en el OnCreate del Datamodule añades:
Código Delphi [-]

qryClientes.sql.text := 'Select * from Clientes where Nombre like :prNombre order by Nombre';
if not qryClientes.Prepared then qryClientes.Prepare; // agilizar la consulta en futuras llamadas.

Ya en tu Form de búsqueda, en el OnKeyUp de tu Edit (que busca por nombres), solo tienes que hacer:
Código Delphi [-]
procedure TFormX.Edit2KeyUp(....);
begin
  if Key = vk_return then 
  with dtmClientes.qryclientes do
  begin
     Close;
     ParambyName('prNombre').AsString := QuotedStr(Edit2.text+ '%');
     Open;
  end;
end;
Con eso consigues que estando en el Edit2, al pulsar la tecla Enter/return, se obtengan todos los registros que empiezan por ese texto.

Para que busque en cualquier parte del nombre, puedes añadir:

QuotedStr('%'+Edit2.text+ '%');

es decir, otro comodín al principio del texto.

Saludos

kalimero 17-10-2006 10:12:57

Hola DelphiTest.
Bueno sobre tu elección de Paradox como BD para tu sistema, te diré que para mi es una mala elección. El BDE hace tiempo que Borland dejó de darle soporte.
Tambien comentas que de momento no va a funcionar en red. Pues bien, el dia que te necesites que funcione varios equipos te va a costa dios y ayuda cambiar de BD. Yo hubiera elegido, sin ninguna duda, Firebird. Es un potente servidor de Bases de datos que ademas te permite trabajar en modo "embebido" es decir, si de momento va a trabajar en un solo equipo, con una sola Dll tienes toda la potencia y funcionalidad del motor Firebird pero sin la necesidad de instalar el servidor.

http://www.firebirdsql.org/

Por otro lado te recomiendo que procures usar modulos de datos para poner todos los componentes que utilices para acceder a base de datos. Es decir, intentar que en los formularios (que son la interfaz del usuario) no haya ninguna referencia a tal ocual sistema de BD. Esto te facilitará el trabajo ante cualqiuer cambio referido a BD que hagas en el futuro.
Bueno espero que te sirvan de ayuda mis comentarios.
Saludos.

Delphitest 17-10-2006 10:49:44

Gracias a los dos por vuestra ayuda.

Buena idea eso de los modulos, es lo que mas o menos estoy buscando y seguro que me resulta util para este programa, asi no indico en cada form la base de datos y tabla con la que voy a trabajar.

Repasaré este código Lepe y seguro que saco algo en claro.


Por otro lado Kalimero, esto que dices del Firebird creo que tienes toda la razón del mundo, varias personas me lo han comentado desde el primer momento pero no he sabido por donde empezar con ello.

Aunque parte de lo hecho se vaya al traste quizás sea mejor que me encamine de nuevo usando ese motor para evitar posibles problemas mas adelante y sea peor que intentarlo ahora.

Mi problema va a ser el de siempre. Me he descargado la version 1.5... del link que me has indicado, lo he instalado en su opción de superserver y resto de herramientas, no se si es la que necesito o no, ahora viene lo bueno. Todos los manuales que hay en la web vienen en inglés por no cambiar la costumbre y no se por donde empezar.

¿Mi base de datos de antes me sirve ahora (la puedo convertir)?

Aunque lo haya instalado no veo nada tipo el DataDesktop que me sirva para crear las tablas excepto una ventana que espera comandos.

Dentro de delphi, uso la version 7, que cambia a la hora de insertar por ejemplo BDEdit, BDSource, Table ... ¿hay que usar otras opciones supongo?

Si estaba un poco bloqueado con las busquedas esto ya supone un muro de hormigon delante de mi, espero aprender algo que me permita seguir sino tendré que regresar a lo que tenía :(

Un saludo

kalimero 17-10-2006 11:09:32

Bueno, no te apures poco a poco.
En primer lugar creo que es preferible que pierdas ahora un poco de tiempo cambiando a Firebird que no despues que te va a costar el doble.
Tu base de datos si que te sirve, no lo he necesitado nunca pero hay herramientas que te convierten tu base de datos Paradox, en una Firebird. En cualquier caso siempre la pudes crear desde cero.
Lo que tu te has instalado es el motor d Base de datos. Para gestionar y administrar la bases de datos necesitas una herramienta de administración. Hay muchas, y como siempre unas de pago otras opensource.
El IbExpert está muy bien. Es de pago pero tienen una version de pruebas:

http://www.ibexpert.com/

Esta otra es Gratis. La baje el otro dia y ahora mismo la estoy probando.
Se llama SqlHamer y la tienes aquí:

http://www.devrace.com/

Y aprovechando que te bajas el "SqlHammer", te bajas tambien los componentes para acceder a Firebird desde Delphi. Son los "FibPlus"

Por cierto. Mira en esta pagina ,también, por su hubiera alguna herramienta para convertir BD's Paradox en BD,s Firebird.

Saludos

Robert01 17-10-2006 15:48:59

Hola delphitest

Con respecto a ese programa de gestión en francés para evitar el error que se produce al compilar tenés que poner las tablas en el directorio que usa borland por defecto o sino crear un alias con el nombre que te pide el programa. Otra posibilidad es que en la propiedad DatabaseName del TTable le pongas el camino si el nombre de la tabla

saludos

Delphitest 17-10-2006 16:44:07

ufffff ... vaya bloqueo mental que me ha entrado :o

Voy a seguir un rato intentando entender algo de firebird pero me temo que o sigo como antes con mis pequeños progresos o me toca tirar la toalla y abandonar.

Esto si que no lo entiendo en absoluto, pero nada de nada.

Y digo yo, con todo lo que trae delphi7 no será mas sencillo seguir con las cosas que me ofrece por defecto ??

Llevo un buen rato y estoy totalmente en blanco con el firebird, no hay forma de entenderlo ni saber por donde van los tiros.

Por cierto, aqui hay una traducción al español del manual :

http://www.firebirdsql.org/manual/es/index.html

y aqui una lista de herramientas de administración, gratuitas y de pago:

http://www.ibphoenix.com/main.nfs?a=...b_download#ADM

Me doy el resto del día de plazo y sino a seguir con lo que tengo teniendo en cuenta las aportaciones del modulo y esas cosillas nuevas.

...con lo facil que era trabajar en clipper con las .dbf ;)

Enan0 17-10-2006 17:41:46

O sino utilizar SQL server podes utilizar Sybase (SQL anywhere, ASA) es un poco engorroso el tema de la Conexion con este ultimo pero se puede.
Todo va a depender de la carga de datos que vayas a hacer.

kalimero 17-10-2006 17:49:56

DelphiTest, no te agobies. Es muy facil. Empieza por:

1. Instala el Firebird
2. Instala una herramienta de administracion, la que quieras.

A partir de ahi, con la herramienta de administacion puedes crear bases de datos,tablas,general consultas ,realizar copias de seguridad,etc,etc,etc.

Cuando tengas esto un poco claro accede a Firebird desde Delphi (los FibPlus por ejemplo).

Si no entiendes algo pregunta. Y recuerda que hay un foro especifico de Firebird.

saludos

Caral 17-10-2006 18:06:26

Hola denuevo Delphitest
La verdad se que hay y ya te han dicho de los diferentes tipos de motores de bases de datos, Paradox Firebird, ect, etc,etc.
La verdad y segun estoy entendiendo, estas haciendo lo mismo que hice yo, hacer un programa para tu empresa sin conoimientos de programacion.
Piensa en varias cosas:
1. Quien le dara el mantenimiento al programa---TU.
2. Conocimiento...POCO.
3. Crecera el programa una vez puesto a trabajar----TE LO ASEGURO.
4. Intenet---LLEGARAS A NECESITARLO.
5. Para cuando lo necesito---ALLER ES MUY TARDE.
6. Cuanto tiempo puedo esperar a que se resuelva un problema una vez que el programa este funcionando---LO NECESITAS YA.
Te voy a dar un consejo y se que a muchos no les va a gustar, cuando uno esta programando solo y sin casi conocimientos es bueno empezar por lo mas sencillo, ya habra tiempo de implementar otras cosas, pero al principio si tienes problemas con las tablas y ademas con la programacion caminaras muy despacio.
Mi consejo es que empieces como yo con un programa enlazado con ACCESS, podras hacer lo que necesites y te simplificara la vida enormemente.
Si quieres empezar como yo desde abajo, con gusto te enseño paso a paso ha hacer tu programa.
El mio empezo pequeño ya tiene 50 froms mas de 70 query y por lo menos 35 reportes, lo manejo en red con 8 ordenadores y lo manejo desde interner con 5 clientes, todo esto hecho con Delphi y Access.
Es solamente una opinion.
Saludos

Delphitest 17-10-2006 18:09:52

Aplazo el entendimiento del firebird para cuando tenga algun conocimiento mas en programación, no hay manera de saber por donde van los tiros :confused:

Casi pierdo la motivación que tenía con mi arranque en este proyecto :rolleyes:

Por lo tanto vuelvo a mis andadas con lo básico, si cuando lo termine me veo con fuerza y tras haber adquirido ya alguna base en delphi, me replantearé empezarlo de nuevo con otro motor de base de datos como puede ser Firebird.

He aportado ya los cambios que me sugería Lepe, es muy buena opción esto del módulo, aunque he tenido que cambiar todos los BDEdit y cosillas que iba viendo relacionadas con el acceso a la tabla.

He hecho todo pero tengo una duda, por eso de no cambiar la costumbre;

Cita:

Con eso consigues que estando en el Edit2, al pulsar la tecla Enter/return, se obtengan todos los registros que empiezan por ese texto.
Ese resultado de "filtro" ¿Donde tiene que aparecer? yo tengo un BDGrid de antes, esto sirve o hay un componente especial para ello ?

Lo digo porque he probado tal cual y al pulsar intro no me cambia nada de la tabla. (a veces me siento tonto preguntando estas cosas tan básicas :( pero realmente no tengo ni idea)

Un abrazo

... estabamos escribiendo a la vez Caral, soy de tu opinión, ya habrá tiempo para complicar las cosas, de hecho se suelen complicar solas sin tener que ir a buscarlas :)

kalimero 17-10-2006 18:18:28

Bueno Caral, efectivamente no estoy mu de acuerdo.
La sencillez no está reñida con la eficiencia. Quiero decir que trabajar con Firebird,Sql Server o cualquier otro motor de BD no es mas complicado que acces (por ejemplo). Es mas, yo diria que hasta mas sencillo. Como comenté anteriormente, es preferible perder ahora uno,dos o una semana si hace falta pensando bien y que herramientas vas a utilizar que no lanzarse a desarrollar una aplicacion que al cabo de x tiempo te va a costar muchisimo realizarle cualquier modificación.

Saludos

Enan0 17-10-2006 18:19:25

Cita:

Empezado por Caral
El mio empezo pequeño ya tiene 50 froms mas de 70 query y por lo menos 35 reportes, lo manejo en red con 8 ordenadores y lo manejo desde interner con 5 clientes, todo esto hecho con Delphi y Access.

Ojo con el Access porque en ese caso se hace Lento e inseguro. y aparte consume mucho espacio. y si eliminas registros porque tenes tablas temporales. cada tanto tenes que hacer un Compactar y reparar para reordenar indices y muchas veces se rompe.
Y no estoy muy seguro.. pero no se como maneja conexiones multiples. PERO... creo que mal.

David 17-10-2006 18:20:38

hola

Me he bajado los recursos traducidos de David Esmeralta , y funcionan bien en Delphi 7 , pero no así en Delphi 5 . Mi pregunta es si para Delphi 5 , teneis algo por el estilo .

Un saludo

AzidRain 17-10-2006 18:28:56

Se me hace que el pobre de Delphitest ya no sabe ni por donde empezar, todos hemos estado dando con toda la mejor intención nuestras opiniones: que si mejor con FB, que si con Access, que si esto que si lo otro...y nos olvidamos que nuestro amigo esta iniciando en esto y practicamente quiere hacer su desarrollo al estilo "hagalo usted mismo". Es como si alguien aficionado a la mecánica quisiera armar un pequeño auto tubular con un motor de VW que tiene por ahi y nosotros ya le estamos sugiriendo que arme un Ferrari!!

Finalmente la decisión de nuestro amigo Delphitest debe ser con la que el se sienta cómodo y que le permita avanzar de a poco con lo que hasta ahora conoce. ¿Que caso tiene meterlo a aprender SQL, solo para que pueda usar Firebird que es "de lo mejor" o MySQL que es "una chulada"...?? No veo el caso, mejor vayamos ayudándolo a resolver sus dudas con lo que tiene hasta ahora. Ya el mismo descubrirá cuando se sienta mas a gusto con el lenguaje y sobre todo que haya agarrado mas cancha, que es más fácil hacerlo con otras herramientas...Quien sabe, igual y lo hace con tablas paradox y muy sencillo y A EL LE FUNCIONA y su sistema RESUELVE SUS NECESIDADES. Después de todo un sistema debe resolver problemas.

Tendremos que contener un poco el entusiasmo e irnos de a poco a poco...

saludos a todos..

David 17-10-2006 18:33:12

Mira , este procedure :

Código Delphi [-]
procedure TForm1.SalirdeGesatrans1Click(Sender: TObject);
begin
   if MessageDlg('¿ Seguro que desea salir del programa ?',
     mtConfirmation, [mbYes, mbNo], 0) = mrYes then
     Application.Terminate;
end;

lo debes de cambiar por este :

Código Delphi [-]
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if MessageDlg('¿ Seguro que desea salir del programa ?',
     mtConfirmation, [mbYes, mbNo], 0) = mrNo then
     CanClose := False;
end;

Es decir te vas al evento OnCloseQuery del Form y escribes el código que he puesto yo .

Caral 17-10-2006 18:39:12

Hola
Como dije trabajo con access, mi base de datos tiene ya mas de 800m, 8 ordenedores en red, 5 clientes via internet, nunca se me ha colgado, mi programa hace automaticamnete un backup cada hora sin que nadie se de cuenta por si acaso, que os puedo decir, no hay mas que ver por el foro y vereis que pasa.
Con respecto a Sqlserver o Mysql, bueno creo que a Delphitest le interesa mas sacar adelante su negocio que ponerse a aprender no se cuantas cosas, conozco sqlserver, mysql, paradox, firebird y me quedo con lo facil access.
en tal caso si me ponen entre la espada y la pared, me quedo con MySql, conectada con zeos, ya que ado es lento para ese fin.
Bueno es cuestion de opinion, no encuentro razon alguna por que cambiarme a otro motor y simplemente doy no my opinion al azar doy my expeciencia en la practica.
Saludos


La franja horaria es GMT +2. Ahora son las 20:47:17.

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