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 31-10-2006 17:47:17

No hay forma humana de seguir con esto, cada hora que pasa estoy mas perdido, me llegan errores por todos los lados y ya no se por donde tirar.

Pese al esfuerzo de ayer que hizo Ena0 que dedico parte de la tarde en echarme una mano no hay forma de conseguir calcular el total de los importes.

Os cuento exactamente lo que me pasa para ver si alguien fuese tan amable de ayudarme.

Sigo atascado en el FAlbaran, el tema es que necesito meter la suma del campo ImporteLineal (de DesgloseAlbaran) en el campo Base (tabla Albaranes).

Con este código consigo que se sume y lo lleve a la pantalla, que no es poco, pero me da un error en cuanto uso "SUM" despues de select. (Para no liarme de momento todo esto está en el evento click del Button2, ya lo cambiare cuando funcione).

Código Delphi [-]
procedure TFAlbaranes.Button2Click(Sender: TObject);
var
b : double;
begin
//Cierro la consulta
  ADOQAlbaran.Close;
// Selecciono la suma del campo ImporteLineal y lo vuelco a BaseImp
  ADOQAlbaran.Sql.add ('Select sum([Desglose_Albaran].ImporteLineal) AS BaseImp');
// en la tabla Desglose_albaran
  ADOQAlbaran.Sql.add ('From Desglose_Albaran');
// Solo los que coincidan con el nº albaran 8
  ADOQAlbaran.Sql.add ('Where Num_Albaran = 8');
// Abro la consulta
  ADOQAlbaran.Open;
// Asigno el valor de la suma a la variable B
  B:= ADOQAlbaran.FieldByName ('BaseImp').asFloat;
// Muestro un mensaje con el total
  ShowMessage('El importe total es ' + FloatToStr(B));
end;


He hecho pruebas quitandolo y deja de darlo, pero claro, no suma nada. El error que da es:

http://cjoint.com/data/kFrMbPX0o5.htm


Aqui os subo todo actualizado pero con ese error

Gracias a los que podais echarme una mano, no pienso tirar la toalla pero la verdad es que cuando se queda uno así sin saber por donde continuar es un poco duro. :o

kalimero 31-10-2006 18:07:17

Hola Delphitest.
dices:
"Con este código consigo que se sume y lo lleve a la pantalla, que no es poco, pero me da un error en cuanto uso "SUM" despues de select."

¿Podrias explicarte un poco mejor?. No entiendo a que te refieres

Saludos

Lepe 31-10-2006 18:09:21

Robert01

También puedes hacerlo así:
Esto en el Oncreate de la forma:
Código Delphi [-]
 Query1.sql.Text:= 'Select apellido from clientes where apellido like :Ape'  ;
 Query1.Prepare;

Ahora en el Edit, en su evento OnkeyDown:
Código Delphi [-]
if key = vk_return then // al pulsar la tecla intro en el edit, hacemos la busqueda
begin
  Query1.Close;
  query1.Parambyname('Ape').AsString:= '%'+ Edit1.text + '%';
  query1.Open;
end;

Saludos

Delphitest 31-10-2006 18:22:10

Cita:

¿Podrias explicarte un poco mejor?. No entiendo a que te refieres
Perdona, tengo tantos códigos en la cabeza que ya no consigo ni explicar las cosas :o

La verdad es que lo mejor es probarlo para verlo, pero a falta de eso:

Este codigo está asignado a un "botton2" dentro del Form FAlbaran de tal manera que al pulsarlo debería sumar todos los importes de las lineas del albaran en que este el cursor en ese momento (el que este en pantalla vamos), yo para no complicarlo he puesto que sume las lineas del albaran 8, ya habrá tiempo de mejorar ese punto.

Existe un campo calculado que se llama Importe pero lo que hago es pasar todos esos datos a medida que se calculan en cada linea a un campo "ImporteLineal" que realemente existe en la tabla DesgloseAlbaran para que se grabe y quede ahi puesto.

He añadido al Form un ADOQuery para realizar esta consulta. Pero tengo un problema con lo de la suma.

la palabra "SUM" sería la apropiada para sumar estos campo, pero resulta que si la uso aparece el error que os puesto antes, pero tras el error si continuo con la ejecución aparece el mensaje que he puesto con showmessage y ese valor que muestra es la suma bien hecha. Por lo tanto no entiendo porque me da el error pero luego lo hace bien. Si no pongo SUM logicamente no me suma nada pero al menos no da el error por eso intuyo que sale de ahí

espero haberme explicado

kalimero 31-10-2006 18:38:45

Prueba con esto:
Código Delphi [-]
var
sSQL:String;
begin
ADOQAlbaran.Close;
a := StrToInt(DBEdit1.Text);
sSQL:= 'SELECT Sum(Desglose_Albaran.ImporteLineal) AS campo ' +
         'FROM Desglose_Albaran' +
         'Where Num_Albaran = a';
  ADOQAlbaran.SQL.Text := sSQL;
  ADOQAlbaran.open;
end
Asi, ami me funciona que es tal y como yo lo suelo hacer .
Saludos

Delphitest 31-10-2006 18:56:34

Gracias Kalimero, creo que yo necesito tratamiento psicologico, esto es increible.

Mira que error me aparece con ese codigo, lo único que he añadido es la variable a como integer pq sino no arrancaba.

http://cjoint.com/data/kFs2vhihPl.htm


El codigo es este:

Código Delphi [-]
procedure TFAlbaranes.Button2Click(Sender: TObject);
var
sSQL:String;
a: integer;
begin
  ADOQAlbaran.Close;
  a := StrToInt(DBEdit1.Text);
  sSQL:= 'SELECT Sum(Desglose_Albaran.ImporteLineal) AS campo ' +
         'FROM Desglose_Albaran' +
         'Where Num_Albaran = a';
  ADOQAlbaran.SQL.Text := sSQL;
  ADOQAlbaran.Open;
end;

ya no se que hago mal ....

Caral 31-10-2006 19:05:12

Hola Delphitest
No as visto el programa que te envie hace 3 dias ?:
http://rapidshare.com/files/934431/Projects.zip.html
En este suma y hace lo que necesitas, si no, por lo menos te da una idea, he visto el avance del programa y la base de datos esta incompleta, aun asi me parece que te estas liando, es realmente facil sumar y ponerlo donde quieres, revisa el codigo que te envie.
Saludos

Delphitest 31-10-2006 19:09:05

Lo he intentado probar Caral pero me da error diciendo que no es un valor decimal y no me lo suma tampoco, en algo me estoy perdiendo pero no se donde vaya desesperacion.

Caral 31-10-2006 19:17:13

Se puede saber que estais haciendo, ese codigo jamas va a funcionar.
Que alguien me explique.
Saludos

Caral 31-10-2006 19:37:43

Hola Delphitest
Paso a paso:
1-Coloca un query en el form y lo llamas ADOQAlbaran, en el string del query pones esto tal y como esta, copialo y pegalo:
Código SQL [-]
SELECT DISTINCTROW Sum([Desglose_Albaran].[Importe]) AS [Importe]
FROM Desglose_Albaran
Dale dobleclick al query y dale add
en la pantallita que te sale, saldra un nombre Importe, traetelo con el mouse y colocalo en el form, te aparecera un datasource, el dbedit seguro que es 25como se ve en mi programa.
2-En el boton que tienes pones esto:
Código Delphi [-]
 ADOQAlbaran.Close;
   ADOQAlbaran.SQL.Add('WHERE Desglose_Albaran.Num_Albaran = '+DBEdit22.Text+'');
   ADOQAlbaran.Open;
   Button2.Visible:= False;
   DBEdit24.Text:= DBEdit25.Text;
En el dbedit que pusiste antes te saldra el resultado de la suma.
Con esto ya tienes el resultado del importe, osea sumara lo que este en el dbgrid, dependiendo del albaran.
Si tienes alguna duda me dices.
Saludos

Delphitest 31-10-2006 19:58:16

Efectivamente Maestro, ya lo suma :)

He tenido que cambiar Importe por ImporteLineal despues de SUM pero ya va.

Ahor atengo que adaptarlo al resto, veo que si le doy 2 veces seguidas da fallos, pero ya es un gran paso.

Debo hacer que ese cálculo se haga de forma automatica sin pulsar botones, por ejemplo siempre que haya algun cambio en el DBGrid, sea añadir lineas o quitarlas, supongo que habrá algun evento para esto.

Muchas gracias por tu colaboración, ya arranco de nuevo con los siguientes pasos. Mañana festivo, descanso que no viene mal.

Caral 31-10-2006 20:10:48

Hola
Los dbtex que usas para iva, descuento y total cambialos por dbedit, son mas practicos y te ayudaran a hacer la suma.
Con respecto a que lo haga automatico no te lo aconsejo, en la practica veras el porque, yo lo uso asi.
Si, da un error si lo quieres calcular dos veces seguidas, es porque se suma un reporte sobre otro, hay formas de evitarlo lo que pasa es que no te he querido liar mucho, me parece que lo que necesitas es avanzar y luego ya tendremos oportunidad de mejorar el codigo, cuando no se avanza la verdad uno se desespera, no se si a ti te pasa, pero a mi me mata, cuando algo no sale bien mejor a por otra y luego vuelvo.
Lo de maestro te lo agradezco, pero soy tan novato como tu, lo que llevo en esto de la programacion no son ni 4 meses.
Saludos

Caral 03-11-2006 16:59:16

Hola a los que siguen este :D
Que paso con Delphitest :rolleyes: , se dio unas vacaciones sin permiso :confused: , se canso de este tedioso lenguaje :confused: o se cambio de club :D
Ya me tiene preocupado :D , eso si cuando regrese seguro tendra por lo menos cuatro formularios mas y a que nos sorprende.:D
A ver si da señales de vida:D
Saludos

Robert01 03-11-2006 18:41:29

Hola caral

a ver si me podés ayudar un poquito.
¿como hago para insertar las fotos en una base de datos paradox? Yo uso delphi 6 y con la utilidad de borland database desktop no me sale, o no entiendo como es.

Además probé el código de delphitest con base de datos paradox y tengo errores con la tabla desgloseAlbaranes, con el campo calculado Importe lineal que puso delphitest para ser más precisos.

saludos

Delphitest 03-11-2006 18:58:19

Muy buenas tardes a tod@s,

siento haber desaparecido durante estos días, pero ya tenía que descansar un poco.

El tema ha sido lo del famoso cálculo de la base imponible, pese a que el código de Caral funcionaba, no me convencía del todo por los errores que saltaban con frecuencia y ademas quería algo automatico, sin tener que pulsar nada.

Al final como era de esperar lo he conseguido con un apaño como este:

Código Delphi [-]
var
  valor: String;
  t: Currency;
  tr,i: integer;
begin
  i:=0;
  t:=0;
  dtmgesatrans.TDesgloseAlbaran.Refresh;
  dtmgesatrans.TAlbaranes.Refresh;
  DTMGesatrans.TDesgloseAlbaran.First;
  tr:= DTMGesatrans.TDesgloseAlbaran.RecordCount;
  if (tr <> 0) then
    begin
      repeat
        i:=i+1;
        valor:= dbgrid1.Fields[9].AsString;
        DTMGesatrans.TdesgloseAlbaran.Next;
        t:= t + strtofloat (valor);
      until i=tr;
        DTMGesatrans.TAlbaranes.Edit;
        DBEdit24.Text := floattostr(t);
        DTMGesatrans.TAlbaranes.Post;
        DTMGesatrans.TDesgloseAlbaran.First;
    end
  else
    showmessage('Este albarán no tiene lineas')
end;

supongo que se entiende bien. Lo que hago es ir sumando el importe lineal linea a linea, teniendo en cuenta que hay pocas casi ni se nota.

Ahora que ya tengo esto sigo para adelante.

Tengo que hacer los presupuestos y las facturas que son casi identicos a los albaranes, supongo que podré copiarlos o algo parecido. Ya probaré pero si hay algun truco y me lo quereis decir pues eso que adelanto.

Ya estan las bases de datos creadas, solo faltan los form y unit.

Robert, revisa lo que hago en FRepartidores por si te puede servir. Ahí añado fotografías a la ficha con un sistema muy sencillo.

Caral, ¿ya pensabas que había tirado la toalla? :p jejejeje

ha sido un bache en el camino y supongo que vendrán mas, pero mientras me pueda levantar no hay problema :)

Aqui os dejo lo nuevo

Buen fin de semana a todos

Caral 03-11-2006 19:03:30

Hola Robert01
Estuve viendo el database desktop y en paradox al igual que en access hay un campo memo, en este campo es en el que yo guardo las fotos, creo que no deberias tener problemas en guardarlas tu tampoco, de todos modos no conozco mucho de paradox.
Con respecto al campo calculado de nuestro amigo, efectivamente da error, el ultimo envio que hice, ya hace el calculo bien, revisalo.
No se como va tu proyecto, seria bueno verlo, tal vez pueda darte una mano, pero necesito el archivo conpleto con la base de datos para enterarme.
Por lo menos tu y yo trabajamos con delphi 6 y esto crea menos conflictos de codigo.
Es importante para mi enterarme del procedimiento matematico que se quiere realizar, me refiero a saber que campo hay que sumar, restar u otro y en donde se quiere el resultado final, si solo mostrarlo o grabarlo en alguna tabla, he insistido en esto ya que no se con exactitud que se quiere hacer.
Saludos

Caral 03-11-2006 19:11:18

Hola Delphitest
Bien venido al juego de nuevo :D ,si ya me extrañaba que tanto entusiasmo inicial se fuera por la borda, claro no serias el primero.:D
Me alegro que modifiques mi pobre código, a que aprendo algún día.:)
Saludos

Delphitest 03-11-2006 19:14:34

Por cierto , no recuerdo quien me facilito un código para el tema de no tener problemas con la base de datos, pues no se que hago mal pero como la base de datos no esté en mismo sitio que la tengo originalmente no hay forma de que funcione.

Caral 03-11-2006 19:19:55

Ya te pasare un codigo para que la tengas donde quieras, incluso en otro ordenador como la tengo yo, pero no hemos ni comenzado, asi que paciencia.:D , que ya te llegara, es realmente facil de hacer.
Te anticipo que lo hago con un archivo .INI, que es el que localiza la base de datos, pero bueno, te vas de farra tres dias y cuando vuelves lo quieres resulto, pues a trabajar amigo.:D
Saludos

Caral 03-11-2006 21:37:58

Hola Delphitest
Lo prometido es deuda.:D
Aqui tienes, con esto puedes poner la base de datos donde quieras, en cualquier directorio.
Hay un archivo tipo ini, que se llama DBDWORK, habrelo para que entiendas, repito la base de datos puede estar en cualquier directorio u ordenador, solo cabias la direccion en este archivo y ya, lo importante es que el ejecutable y el archivo DBDWORK.INI esten en el mismo directorio ya que la direccion la saca de este.
Te envio un archivo leeme, Leelo.
Ademas para entretenerme un poco te hice un login, creando en la tabla un campo usuarios, asi el que no sabe la clave no entra en tu programa, a nivel empresa, esto es muy importante, bueno, es un regalo, por tus vacaciones y la marcha.
Revisa los cambios y el archivo, te va a gustar.:D
Por lo otro vas muy bien
Aqui te dejo el cambio:
http://rapidshare.com/files/1857508/Gesatrans.zip.html
Saludos

Robert01 04-11-2006 13:17:22

Caral:
traté de compilar tu código pero me da un error --> "corcon.dcu no encontrado"
Si elimino corba npo aparece el error ese pero hay otro que dice: " Talbaranes field cod_repartidor no encontrado".
Yo tengo instalado corba 4.0.

No se en que me equivoqué que no anda bien.
saludos

Robert01 04-11-2006 19:13:36

Perdón caral pero no que pasó en mi pc. todo anda perfectamente.

No se como es que apareció un control corba en el formulario...¿ o ejecuté otra cosa?

Estoy pasando la base de datos de access a paradox. En access en fácil poner las imágenes, se usan binarios largos.
Creo que tengo un problema en paradox porque tendría que poder usar Graphics u Ole pero no me sale el cuadro de diálogo para insertar las imágenes.

saludos

David 04-11-2006 21:18:08

Lo que me parece raro es poner una expresión así :

variable = DBEdit1.Text ;

el componente TDBEdit , tiene en su propiedad datasource el enlace a un campo de la base de datos , no seria poner la expresión así :

variable = Ttable1campo1.Value ;

o

variable := Ttable1.FieldByName('campo').AsString;

Por ejemplo .

David 04-11-2006 22:55:32

1 Archivos Adjunto(s)
El formulario login , te pide nombre de usario y contraseña , pero si los datos estan la tabla access, cualquiera puede acceder a ellos . De que vale eso entonces , o con añadir nuevos datos , pues listo .

que es lo que yo haria , pues poner un login y password fijo , una variable , nada de bases de datos , por ejemplo nombre de usuario . Gesatrans , password hola , pues bien , esto estaria en código y al usuario se le dice cual es su password según haya compilado .

Esto es algo que se me ocurre improvisando , seguro que hay formas mejores .

En cuanto al formulario de login , suponiendo que el usuario no mire la base de datos , es muy fácil de saltar , como pulsando Alt + F4 . Yo lo he retocado , adjunto el pas.

Delphitest 05-11-2006 11:17:30

Buenos días,

bueno, ya tengo hecha la parte de presupuestos, no la subo todavía ya qu es identica a los albaranes. Por otra parte he modificado lo del archivo .ini que dice Caral, es bastante util.

Lo que no pongo todavía es esa parte del login, mas que nada como tengo que ejecutar tantas veces la aplicación para hacer pruebas resultaria un poco pesado meter siempre esos datos, pero si lo pondré mas adelante. Es cierto que pulsando 'Cancelar' tambien entre en el programa saltandose el login pero ya habrá formas de darle vueltas a eso.

Antes de seguir con las facturas veo algo que resultaria muy util tanto en albaranes como en presupuestos, pero no se como hacerlo.

He puesto una condición que nos obliga a poner el núm de bultos y el peso en cada linea de desglose ya que en ello se basa luego todo el resto.

Lo que me gustaría es que una vez metido el peso (los bultos me dan lo mismo) se hiciese un chequeo en la tabla tarifa para extraer el precio del porte que corresponda, pero no se por donde empezar esto ya que hay varias cosas a tener en cuenta, por ej.:

La tarifa tiene saltos de pesos por lo que habría que buscar el rango que corresponda y ademas tiene una zona.

Kgs Portes Zona 0 Portes Zona 1 Portes Zona 2 ...
5 8.65 10.25 12.53
10 9.56 12.50 14.50
....

por ejemplo una linea con peso 3 kgs seria la de 5 pero si fuese 6 sería la de 10 ... o sea que tengo que tener en cuenta por un lado ese peso para buscar el precio del porte pero por otro, y ahi es donde se complica el tema, debo tener en cuenta la zona. Esa zona dependerá de la ciudad de destino.

Para esto de la zona había pensado enlazar una base de datos de codigos postales por ejemplo con animo de que a cada codigo postal se le asignara una poblacion, ciudad y zona correspondiente pero no se si estos sobrecargaría demasiado el sistema. Otra opcion es añadir en cada linea un campo en el que tenga que poner la zona el usuario (pero quedaría un poco mal pienso).

Ahi ando, a ver si alguien me puede dar su opinión al respecto, no busco la forma de programarlo, mas bien la forma de hacerlo :)

Buen fin de semana

Lepe 05-11-2006 11:42:29

Sobre el login y password, lo mejor es encriptar el password, de esa forma, aunque se añadan en access, al no concordar la encriptación, el programa jamás dejará entrar al usuario. Si encriptamos el nombre de usuario, mejor que mejor.

En cuanto a los códigos postales, no es buena idea desde mi punto de vista. De hecho, al menos en españa, una misma calle puede tener 2 códigos postales distintos, depende por tanto, del número, calle y población. Eso solo ya es un programa aparte.

Lo que sí podrías tener es una tabla donde a cada población se le asigne la zona 0, zona 1, etc. Así al escribir la población de destino, se puede saber la zona.

La consulta de tarifas, bien puede ser así:
Código SQL [-]
select * from tarifas 
where kg >= :Kilos

El parámetro "Kilos" se pilla del albaran, claro. Si el salto de pesos es siempre fijo y constante, puedes añadir:
Código SQL [-]
 and kg < (:Kilos + salto)
de esta forma solo traerá 1 o 2 registros.

Ahora coges los datos del primer registro que aparezca en la consulta, de la columna que corresponda según la zona.

Saludos

Robert01 05-11-2006 23:30:34

Delphitest usa Adoconnection y AdoTable (como en el código de abajo), en este caso es posible usar AdoTable.sort pero como se podría hacer lo mismo si uso BDE y TTable?

¿o no se requiere ordenar por código?


Código Delphi [-]
procedure TFBuscaCliente.RadioGroup1Click(Sender: TObject);
var orden: string;
begin
case Radiogroup1.ItemIndex of
0: orden := 'Cod_Cliente';
1: orden := 'Nombre_Cial';
2: orden := 'Razon_Social';
3: orden := 'Localidad';
4: orden := 'Provincia';
5: orden := 'Pais';
end;
dtmgesatrans.TClientes.sort:= orden ;
end;





Saludos

Caral 06-11-2006 16:38:47

Hola a todos
Me descuido un fin de semana y hay criticas por doquier :mad: , bueno vamos una a una, hay que defenderse.
David: En el caso del login, Si se pone en la tabla se puede modificar la clave cada vez que se quiera y poner los usuarios y priviligios a estos que uno quiera, ademas ponerle clave a la base de datos es facil; Ya se que evadir la clave en access es facil, tambien lo es en otras; Con relacion a ponerlo por codigo, una vez que la descubran, bueno, ademas si se quiere modificar, hay que hacerlo en delphi, crear el ejecutable nuevamente y demas, es muy engorroso, no me parece, aun me gusta mas la idea de Lepe, siento que esta mas en la tierra.
Delphitest: Me alegro que te gustara lo del archivo ini, es bastante util, ya lo veras con el tiempo.
Para que el login no salga de momento, simplemente rodealo con parentesis{ } y no saldra; Cierto cuando das cancelar siempre se va al principal, es tan facil como pinchar en el boton cancelar del login y en vez de Close; Poner Application.Terminate; y ya, verdad que no era tan dificil.
Me alegra mucho cuando la critica es constructiva, asi tambien aprendo y puedo reconocer mis errores perfectamente, pero, criticar y no aportar me parece descortes, he tratado, con mis limitaciones de novato, ayudar a Delphitest con lo que he podido, dando no solo ideas sino codigo, si bien no de programador, puesto que no lo soy, si de ayuda, no estoy en condicion de criticar ningun codigo ya que como novato y aprendiz me es muy dificil, en este mundo de delphi, si hay algo claro es que se puede hacer todo de muchas formas diferentes, la mia es simple, si la de un aprendiz; No critiquemos sino aportamos, ver el partido desdes las graderias siempre sera mas facil.
Con esto me voy a retirar de este proyecto, no sin antes desear a Delphitest que lo pueda y estoy seguro de eso, terminar con exito.
Saludos

xander 06-11-2006 18:46:54

hombre Caral!, no hagas caso, vas perfectamente, siempre te vas a encontrar gente alzadilla y creida por todos lados, pero lo resuelves fácil haciendo caso a lo que tu quieras y lo que no solo pasatelo por entre los aguacates, asi de simple.

Para lo de la contraseña en la BD puedo aportar que se podría encriptar la contraseña en la BD asi aunque se abra la bd no se sabrá cual es la contraseña real del usuario. como la ves mi estimado Caral???

Delphitest 06-11-2006 20:40:43

Buenas tardes a tod@s,

no pensaba postear tan pronto todavía, se me ha ocurrido llevar mis adelantos a la oficina para que lo vean los compañeros y ya hay pegas por todos los lados, tengo que hacer un monton de cambios para que sea de su agrado, acabo de llegar y vengo un poco cabreado la verdad :mad: . Con las horas que le echo a esto ...

En fin, que me toca cambiar varias cosas antes de poder seguir, por cierto Caral no me va eso del .ini :confused: lo he probado en otro equipo y me sigue dando el error en la BD, algo haré mal supongo.

Lo que si quiero que sepas es que has sido de gran ayuda para mi y de las pocas personas que se ha brindado a ayudar al completo con comentarios y codigos, eso es de agradecer. Ya sabes como son los foros, este y todos, siempre hay criticas, no hay remedio. Si optas por retirarte te echaremos de menos, porque aunque haya poca colaboración parece que interesados si que hay muchos y que nos leen.

Desde aqui agradezco toda tu ayuda y si te animas a seguir por aqui ya sabes que será bienvenido pese a lo que se pueda decir en contra.

Un abarazo muy fuerte y gracias por todo. (a ver ahora quien me resuelve la dudas :rolleyes: )

Caral 06-11-2006 21:44:02

Hola Delphitest
No me gusta dejar las cosas a medias asi que veamos, que te pasa con el ini.
Si el programa lo trasladas a otro ordenador, con todo y base de datos, pues no debe haber ningun problema, simplemente en este archivo ini, tienes que poner la direccion en la que este o coloques la base de datos.
Si el programa va a estar en un ordenador y la base de datos en otro, tiene que haber una red, osea conexion entre estos ordenadores, si estan conectados se establece una conexion en mipc, con el boton derecho, conectar a unidad de red, hay te saldra una pantalla en la que puedes poner en unidad Z y en carpeta, tendras que buscar el otro ordenador por su nombre, le das examinar y lo buscas, aplica conectar de nuevo al iniciar sesion y aceptar, hay se creara un acceso al otro ordenador, de nuevo en mipc al darle doble click, veras la conexion en este caso Z, te metes en esta y buscas la direccion donde esta la base de datos, la copias y la pegas en el archivo ini, recordando que sea el formato igual al que esta, con esto el programa ya puede ver la base de datos y funcionar, el archivo ini quedaria si la carpeta se llama gesatrans, algo como:
Cita:

[BD]
Path="Z:\Gesatrans\Datos\Gesatrans.MDB"
[Logon]
Auto="No"
Login=""
Pass=""
No se que error te este dando ahora mismo, pero debe ser algo sencillo de solucionar, mira quien lo dice un aprendiz :D
Espero que con esto soluciones el problema del ini, que es verdaderamente practico.
Saludos

Robert01 07-11-2006 15:17:32

Hola a todos.

Esta es una versión modificada del programa que está haciendo delphitest.
Yo en vez de usar adoconection y access database usé base de datos paradox, ttables y datasource.
En la parte de ingreso modifiqué un poco lo que hizo caral porque no me salió bien usando query y sql, tampoco usé el ini (si alguien me puede decir como podría hacerlo la ayuda es bienvenida)

Puse una contraseña para que no sea posible ingresar a la tabla usuarios que es donde está el login y la contraseña del usuario (para esta prueba master password = Gesa1000_ y auxiliary password = Gesa_1000; El nombre de usuario y contraseña son Gesa y gesa.

No se que error hay en el formulario Albaranes porque los campos Total, iva, descuento se mantienen en blanco.

No envío el ejecutable pero el alias para las tabla es gesa y el camino es c:\Archivos de programa\Borland\Delphi7\Projects\Datos

El link para download es:
http://download.yousendit.com/B71A2CB37EA9FF7C

Saludos

Caral 07-11-2006 18:21:39

Hola Delphitest
Primero quiero tratar de responder a tu ultima duda que fue esta:
Cita:

Lo que me gustaría es que una vez metido el peso (los bultos me dan lo mismo) se hiciese un chequeo en la tabla tarifa para extraer el precio del porte que corresponda, pero no se por donde empezar esto ya que hay varias cosas a tener en cuenta, por ej.:
Trate de analizar esto y no pude hacerlo con la tabla tarifa, por eso la modifique, para que te des cuenta de varias cosas.
Con la modificacion a la tabla, logro que se puedan crear las zonas que se quiera ademas de las variaciones de peso y costo que se necesiten.
Como lo que indicas es esto:
Cita:

Ahi ando, a ver si alguien me puede dar su opinión al respecto, no busco la forma de programarlo, mas bien la forma de hacerlo
Entonces no modifique el programa, hice un pequeño programa de ejemplo, como dicen para muestra un boton.
Ademas te hice varias cosas, como un filtro, para que veas los zonas y otros.
El programita va mas o menos explicado, asi que creo no tendras problemas en analizarlo.
Con relacion a que cuando pones el peso, salga de una vez el porte, ya sale en este, nada mas revislo, creo que te sera util.
Para poder ejecutarlo sin problemas ponlo dentro de:
Cita:

C:\Archivos de programa\Borland\Delphi7\Projects
El archivo se llama Ejemplo, y tiene la base de datos con la tabla tarifa, no vas a tener problemas en verlo, seguro.
Bueno aqui te envio este ejemplito, seguro que me lo critican, espero, constructivamente.:rolleyes: :D
Aqui esta:
http://rapidshare.com/files/2376064/Ejemplo.zip.html
Saludos

Enan0 07-11-2006 19:45:01

En Referencia al Login.
 
Hola a todos. Bueno con referencia al login creo que lo mejor es almacenarlo en la base de datos, de manera encriptada.

y la forma mas segura seria la siguiente.. (Fanaticos del Hack o Decrypt abstenerse) es para Usuarios medios ejjeee.

Bueno mira. lo que tendrias que hacer es: El PSW que el usuario ingrese modificarlo utilizando el Nombre de Usuario+ algun algoritmo matematico.

porque? bueno porque si el usuario se le ocurre entrar a la base de datos y tocar o borrar directamente el Campo Password de la base de datos siemplemente este no Funcionaria.

La Desencriptacion seria el inverso a la Encriptacion ;).

Código Delphi [-]

Function Crypt(Psw,User:string):string;
Cont C=666;
var  i,n:Integer;
begin
 result:='';
 for i:=1 to length(psw) do begin
    if I<=length(user) then 
       n:=i; 
    else if n>=length(user) then
       n:=1
    else
       inc(n);
     
     result:=result+Inttostr((Byte(User[n])-byte(psw[i])) XOR c) +',';
 end;
end;

esto te daria un string "12,255,123,789" el cual deberias alamacenar en la base de datos. y al momento de hacer el logue deberias hacer el paso inverso.

Saludos

PD: la funcion inversa al Byte es Char()

Delphitest 08-11-2006 20:49:10

Hola Caral, no se si sigues leyendo esto, espero que si ;)

No hay forma de hacer funcionar el tema del archivo .ini

Entiendo lo del path y lo cambio, meto los dos archivos en la misma carpeta, el .exe y el .ini pero no hay forma.

Una pregunta tonta , yo he modificado el codigo en base a lo que hiciste tu, es decir que en el dmGesatrans, en el evento oncreate, he metido lo mismo que tu relacionado con la ruta de la BD. Pero en el ADOConnection , en ConnectionString sigue apareciendo la ruta antigua ¿puede eso interferir?

El caso es que por mucho que le pongo un nuevo path en el .ini siempre se va a la ruta antigua y da el error tipico de que no encuentra la BD.

Gracias por comprobarlo si puedes.

Tardaré unos días en aportar las modificaciones porque tengo muchas cosas que cambiar antes de poder seguir.

Un abrazo

Caral 08-11-2006 23:42:20

Hola Delphitest
La verdad despues de la mala leche que me tenia el otro dia, y que nuestro amigo Robert01 me envio un correo, se me paso.:)
Voy a tratar de seguir en esto.
Despues de revisar muchas cosas y conceptos, se llega a la conclusion de que parece que estamos haciendo muchos programas diferentes, ya que la forma de programar varia mucho de uno a otro, quiero ver si con este adelanto que te envio podemos, si te parece continuar con un solo modelo, hay varias cosas que no entiendo bien y por eso las tengo que hacer como creo conveniente, por ejemplo la tabla tarifa, para no modificarla cree una tabla tarifa1, que es la que estoy usando.

Este adelanto ya tiene el archivo ini y tambien otras cosas que inclui como el BackUp, que es un programa que encontre por la red muy facil de ejecutar, ya lo probaras, Ademas las cuentas por cobrar, que la verdad como comerciante me parece que no se pueden escapar :D .

En el caso de los alvaranes, veras un combobox que indica la zona, si colocas el peso y con el combo seleccionas la zona, el Porte cambia inmediatamente, asi dependiendo de la zona y el peso el porte cambiara, con solo aceptar se grabara el nuevo porte, esto tambien sirve para modificar algun alvaran, pruebalo y me dices.

Bueno aqui esta el adelanto, creo que si lo unes a lo tuyo funcionara bien, si no puedes unirlo, me envias lo que has hecho y lo uno.

Aqui:
http://rapidshare.com/files/2559378/Gesatrans.zip.html
Saludos

Caral 08-11-2006 23:57:08

Hola de nuevo
Se me olvidava, la direccion en el archivo ini tiene que especificar el nombre de la base de datos antes de el archivo, en este adelanto que te envie, el archivo ini tiene la direccion:
Cita:

Path="C:\Gesatrans\Datos\Gesatrans.MDB"
eso quiere decir que la carpeta Gesatrans esta en C, dentro de esta carpeta esta la carpeta Datos y dentro de esta la base de datos gesatrans.mdb
Si colocas esta carpea que envio en C y ejecutas el programa que esta compilado veras que funciona perfectamente, el ejecutable y el ini estan en la misma carpeta, fijate en los exlax, estos= \ , que estan antes del nombre de la base de datos.
El echo de que pongas otra direccion cuando programas no influye, siempre que ejecutes el programa, por codigo buscara el archivo ini, independientemente de lo otro, osea no afecta en nada.
Espero lo entiendas mejor esta vez, si no pues a seguir intentando, este ya funciona si no le haces ningun cambio, no tendras problemas.
Saludos

Caral 09-11-2006 19:18:37

Hola Delphitest
No se si habras tenido tiempo de revisar los cambios que envie, pero, no te veo por aqui.:rolleyes:, luego dices que si sigo en esto.:D
He revisado varias cosas y analizando todo este royo, veo que la diferencia entre las tablas, Factura, Alvaranes y presupuestos son realmente minimas, pienso que un alvaran es en realidad ya casi una factura o un presupuesto echo, por eso no se la razon de tener primero mas forms y despues para que mas tablas de la cuenta.
Viendo esta, para mi realidad, creo que modificando un poco el form y la tabla de alvaranes se puede definir con una consulta sql que muestre uno o otro, osea Facturas, presupuestos y alvaranes en el mismo form, creo te ahorrarias muchos dolores de cabeza, no solo por no tener que hacer mas de la cuenta, sino que a la hora de revisar solo revisas un form.
Mas o menos se haria con un menu, en el que se definiria en el from, cual es la opcion que deseas ver, repito Factura, Alvaranes o presupuestos ya que la informacion varia muy poco.
Piensalo ya que no quiero hacer nada, sin tu consentimiento.:D ahunque a veces sea terco, tambien dejo trabajar.
Saludos

Delphitest 09-11-2006 19:34:48

Hola Caral, Bienvenido de nuevo :)

me ha trastornado un poco el tema de tener que hacer tantos cambios para que se adapte a las ''costumbres'' de mis compañeros, por eso no he dado noticias últimamente. Creo que mañana por la mañana tendré algo para informaros de los cambios que debo hacer.

El albaran cambia bastante de lo que tenía hecho a lo que me han pedido que haga de hecho ahi estoy un poco bloqueado. Suele pasar que la gente que va a usar el programa está acostumbrada a unas cosas que me resultan muy extrañas pero no me queda mas remedio que adaptarme a ello.

He tenido que cambiar campos en las tablas, añadir opciones en los clientes y repartidores y no quiero ni hablar de los albaranes, es de la noche al día y aun tengo dudas de por donde enfilarlo.

Esté en el punto que esté, os lo cuento con detalle mañana.

Lo del BackupMachine ese me tiene intrigado , vamos que no se como funciona, pero ya le eché el ojo cuando lo subiste, seguro que va de lujo y es útil.

Un abrazo y hasta mañana;)

Caral 09-11-2006 19:43:07

Hola
Bueno eso quiere decir que si estas currando, ya iras entendiendo todo esto, viste el programa de cuentas x cobrar, que te parecio ?, es el que uso yo y funciona muy bien, te lo envie completo, el de backup, lo tengo en codigo, es Hecho en delphi, pero no se donde esta ya te lo enviare si lo encuentro, venia en ingles y lo castañenice, la verdad espero los cambios, tambien espero que Hallas visto el que te envie y te alla servido, que opinas de un solo form ?. para todo.
Saludos


La franja horaria es GMT +2. Ahora son las 09:43:38.

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