Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #101  
Antiguo 26-10-2006
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
hola a todos

Yo probé el código de maeyanes. A la función la puse en la unidad del datamodule. Agregué Dialogs en la unidad para poder usar showmessage.

Al ejecutar el código surgió un error cuando quise ingresar datos en el formulario de albaranes.

Con respecto a lo que decía caral que no veía el formulario del datamodule es por los valores de coordenadas que tenía (left y top), yo abrí el datamodule.dfm y le cambié por valores adecuados para que quede más o menos centrado en la pantalla.

saludos
Responder Con Cita
  #102  
Antiguo 27-10-2006
Avatar de xander
xander xander is offline
Miembro
 
Registrado: jul 2006
Posts: 499
Poder: 18
xander Va por buen camino
Dos cosas:

1.- Que bueno que estén haciendo un programita de Facturación entre todos aqui, de P.M....

2.- Que malo que lo estén haciendo en Access
__________________
"Hey, nena, debe ser genial ser tú y verme a mí mismo..."
Responder Con Cita
  #103  
Antiguo 27-10-2006
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
yo no estoy usando access, estoy usando paradox y al mismo tiempo estoy probando con lazarus.
saludos
Responder Con Cita
  #104  
Antiguo 27-10-2006
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
¿Porque usamos access?

En en mensaje anterior quise decir también lo estoy haciendo con paradox.

Debe haber muchos integrantes en el foro que al igual que yo no son profesionales en sistemas.

Los que estamos en estas condiciones tal vez carezcamos de los suficientes conocimientos de programación para empezar a utilizar bases de datos más poderosas y seguramente también más difíciles de usar.

Además hay muchos casos en que para pequeñas aplicaciones creo que con access es suficiente y por otra parte, siempre hay tiempo para cambiar porque en todo caso el cambio siempre va a insumir mucho menos tiempo que si no tuviéramos ningún conocimiento.

Yo no tengo demasiados conocimientos de paradox, access y ninguno de las otras bases de datos, etc pero con lo publicado estoy tratando de aprender un poco más.

Hace unos días traté de hacer las cosas usando firebird y mysql pero no conseguí entender como empezar.

Imagínense si en un curso de algo nos enseñan a sumar, restar, etc , a realizar operaciones básicas, y luego alguien nos dice que se puede hacer las cosas de otra forma: supongamos que tenemos que aprender álgebra, cálculo, etc en unos pocos días.

Si uno tiene conocimientos de visual basic resulta más fácil aprender delphi aunque sean diferentes y lo mismo ocurre con access.

Yo me doy cuenta de los vastos conocimientos que tienen muchos foristas y de lo acertadas que seguramente estarán sus preferencias, espero que mi humilde crítica no sea mal recibida.
Responder Con Cita
  #105  
Antiguo 27-10-2006
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Buenos días,

el uso de access ha sido por el hecho de que parto totalmente desde cero y prefiero dedicar mas tiempo a la programación de delphi que a entender como funciona el tema de las bases de datos pero cuando esté acabado prometo dedicar mi esfuerzo a traspasar todo a FireBird, mas que nada por aprender un poco mas.


Tienes razón Robert, el tema del DT puede ser por eso de la posición en pantalla, no me he dado cuenta del detalle pero trabajo con 2 monitores y en una resolución de 1280 x 1024, me resulta muy cómodo repartir las ventanas entre las dos pantallas.

Que tengais un buen día, yo empiezo con la tarea.
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #106  
Antiguo 27-10-2006
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Pues ahora si que necesito ayuda porque me he quedado en blanco

Ando con el tema de los famosos cálculos.

Ya he conseguido, creando un campo calculado en la tabla TDesgloseAlbaran y llamado Importe, que me de un importe en cada linea de albaran.

Lo he añadido desde el DTMGesatrans y en la tabla he metido en el evento OnCalcFields

Código Delphi [-]
procedure TDTMGesatrans.TDesgloseAlbaranCalcFields(DataSet: TDataSet);
begin
  TDesgloseAlbaranImporte.AsCurrency := TDesgloseAlbaranPortes.AsFloat + TDesgloseAlbaranReexpedicion.AsFloat + TDesgloseAlbaranOtros.AsFloat;
end;

Esa parte funciona sin problemas.

Ahora necesito que el Campo Base de la Tabla TAlbaranes sea la suma del campo importe (de TDesgloseAlbaran) teniendo en cuenta como filtro que todas las lineas a sumar tienen en comun el campo Num_Albaran.

A simple vista no tiene mucha complicación pero creo que el SQL me tiene manía, os digo lo que he hecho pero que no funciona:

He creado en el form del albaran una Query llamada ADOQAlbaran enlazada logicamente con TDesgloseAlbaran, hasta ahí creo que voy bien.

Ahora para el calculo (solo para probar) he puesto un botón y en el evento OnClick estoy probando esto:

Código Delphi [-]
  ADOQAlbaran.Active := False;
  ADOQAlbaran.Sql.add ('Select sum(Importe) as TotalImporte');
  ADOQAlbaran.Sql.add ('From Desglose_Albaran');
  ADOQAlbaran.Sql.add ('Where Num_Albaran = StrToInt (DBEdit1.text)');
  ADOQAlbaran.Active := True;
  ShowMessage('El importe total es ' + TotalImporte.AsCurrency);

De momento solo me conformo con que aparezca ese mensaje con el total para comprobar que esté bien, luego la finalidad es que lo ponga en DBEdit24.

DBEdit1 para que os orienteis es la casilla donde ya está el núm de albarán.

No funciona de esta manera pero soy incapaz de saber porque. Para empezar tengo que poner como nombre de tabla Desglose_Albaran (que es nombre original de access) en vez de TDesgloseAlbaran (que es el que tengo en el DT), eso me da igual pero no lo entiendo.

Luego el error me lo da diciendo que TotalImporte no está declarada.

Importe es de tipo Currency por cierto.

No paso de aqui.

Si alguno me podeis echar una mano os lo agradezco, veo que el sql y yo somos muy diferentes

Gracias por adelantado
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #107  
Antiguo 27-10-2006
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 288
Poder: 21
kalimero Va por buen camino
Hola Delphitest.
Por los detalles que das, creo que estas mezclando churras con meninas.Me explico. "TotalImporte" es el nombre de la columna que te dara el valor en la sentencia SQL. Para recoger ese valor en delphi tienes que hacer algo parecido a esto:
Código Delphi [-]
procedure Miprocedure;
var
 Mivariable : Double
begin
Mivarible := Miquery.fieldbyname('TotalImporte').asFloat;
end;
Es decir , no puedes tratar "TotalImporte" como una variable, puesto que delphi no sabe nada de ella. Es algo interno al componente.
Una vez que tienes el valor recogido en "Mivaribledeclarada " ya puedes trabajar con ella.
Saludos
Responder Con Cita
  #108  
Antiguo 27-10-2006
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
Para los que Comentaron "Solo Access"

Hola amigos, bueno para los que comentaron que era una lastima que solo se pudiera conectar Con ACCESS (ya se que muchos lo han modificado) Aca les dejo otra pequeña forma de como conectar a otra DB. Utilizando un archivo UDL.

Bueno primero que nada, en el datamodule Borren lo que contiene el ADOConnection1, en la propiedad Connection String. (En el Object Inspector).
Luego en el ONCreate de dicho DAtamodule pongan este codigo reemplazando la linea que corresponde:
Código Delphi [-]
ADOConnection1.ConnectionString:='FILE NAME=' +  ExtractFilePath(paramstr(0)) + 'Conexion.Udl';

Bueno lo puse fijo con una Archivo llamado "Conexion.UDL" que deria encontrarse en la misma Carpeta que el "EXE".

Con esto podran importar la Base de Datos de ACCESS al motor que sea posible (creo que a casi todos) y luego hacer la Conexion corresponidente mediante dicho archivo.

Si no sabe como crear el archivo UDL: Creen un archivo de TEXT y cambienle la extencion por la antes citada. luego doble click y solo setear lo que corresponda.

Saludos
Responder Con Cita
  #109  
Antiguo 27-10-2006
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
hola delphitest

En el archivo que subiste ayer hay un formulario Frepartidores que tiene un link a TMDRepartidores (uno de los que tenías con un datamodule antes de que los pusieras a todos en TMDGesatrans)
Responder Con Cita
  #110  
Antiguo 27-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola A todos
Siempre criticado a la pobre base de datos Access, que les ha hecho ? , si quereis liaros pues usad lo que querais, la verdad en esto hay mucha tela que cortar y tantas opiniones como foristas, me voy por lo sencillo, como buen principiante y creo en la simpleza ademas que Delphitest no habria avanzado tanto si no huviese empezado con lo mas sencillo, bueno esta es mi opinion.

Delphitest sigo sin ver algunos forms, si puedes colocarlos en otra posicion en la pantalla, seria bueno en tu proxima ampliacion.
Con respecto a lo relacionado con sumas etc, para mi lo estas haciendo dificil, en mi opinon el albaran se deberia hacer primero, sumar todo lo que se necesite y posteriormente, si quedo este como querias, grabarlo a la base de datos, asi podras hacer un albaran, por ejemplo, para ver a que precio saldria X transporte a X lugar por X peso, sin necesidad de grabarlo, que al cliente le parecio el precio, pues lo grabas, un albaran es en realidad una factura proforma, de una u otra manera, si todo lo haces directamente sobre la tabla, puedes equivocarte, ademas que estas consumiendo recursos sin necesidad.

Otra cosa y creo es muy importante, cuando abres el datamodule, creas y abres todas las tablas de una vez, ahora tienes 4 datos, cuando tengas 1.000.000 tendras que tomarte un cafe hasta que el programa arranque, las tablas hay que iniciarlas cuando se necesitan y cerrarlas cuando no, por eso se usan los query ya que estos no traen toda la informacion, solo lo que necesitas ahorrando tiempo y recursos, sin temor a equivocarme, pienso que lo estas haciendo mal, ya se que no es tu culpa, pero estas a tiempo de cambiarlo luego sera mas dificil, si te vas fijando en tu programa te daras cuenta que cada vez es mas lento, fijate, porque luego le echaran la culpa al pobre Access, mi base de datos tiene casi 800m y corre a la perfeccion.
Espero el proximo avance, ojala con los forms en su lugar para poder verlos.
Saludos
Responder Con Cita
  #111  
Antiguo 27-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Lo que dice Caral de traerte todos los datos con la tabla , me pregunto si habrá alguna instrucción para no permitir que vengan más de 50 registros de una vez .

En cuanto al programa , le he echado un vistazo por encima y lo que no me acaba de convencer es poner en enabled := False , cuando no esta en modo de insert or edit . El caso es que con poner el DBGrid , ReadOnly vale , y además así se ve muy mal los datos , mejor es si quieres cambiar el color del dbedit , ponle el color clInfoBk , cuando este en modo de edición , pero lo de enabled := false ,no me gusta , no he visto que los programas esten así . Esto es más un dato de decoración , pero bueno .

Mirá Delphitest , hay un programador famoso de Delphi , que escribe libros , yo tengo uno de ellos y en él hay ejemplos de cada capítulo , ejemplos de programas pequeños claro esta . Te envio uno de esos programas pequeños , en un archivo de sólo 22 kb , para que analices como programa este hombre . Aquí lo tienes : http://www.megaupload.com/es/?d=HBGZCIWU

Última edición por David fecha: 27-10-2006 a las 18:44:06.
Responder Con Cita
  #112  
Antiguo 27-10-2006
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Buenas tardes,

ando un poco liado hoy, os pongo las actualizaciones.

He cambiado lo que comentas David, es cosa de gustos supongo pero lo he puesto como dices.

Caral ya he movido todo a la misma pantalla, ahora seguro que lo puedes ver sin problema. Eso que dices de las BD en el DTM es cierto, se nota que poco a poco va tardando mas en abrir. Ya lo intentaré solucionar este fin de semana.

Probar lo de los albaranes si quereis, pero me sigue faltando lo de la Base Imponible, supongo que no puede ser tan complicado pero ya no veo mas alla de lo que tengo, a ver si me despejo un poco estos días y encuentro la solución.

Aquí está lo nuevo

Buen fin de semana para todos
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #113  
Antiguo 27-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Vale Ya lo veo
En que quieres que te ayude?
Quieres que te adelante algo ?
Saludos
Responder Con Cita
  #114  
Antiguo 27-10-2006
Delphitest Delphitest is offline
Miembro
 
Registrado: sep 2006
Ubicación: Salamanca-España
Posts: 249
Poder: 18
Delphitest Va por buen camino
Entra en la opción, Ventas/Albaranes

Si das de alta uno nuevo veras que despues de meter los datos de cabecera hay que pulsar el botón que pone "+" a la dcha del DBGrid.

Eso permite meter las lineas del albaran y aparecen con un importe de cada linea.

Mete una linea , le das a aceptar y luego otra y ya a cancelar, eso hace que las lineas aparezcan en el dbgrid. Hasta ahi todo bien, pero fijate en la base imponible , está a cero, eso es lo que quiero solucionar, que sea la suma de los importes.

El iva, descuento y total ya están preparados.

Gracias de nuevo.
__________________
Mi proyecto paso a paso (Parte I)
Responder Con Cita
  #115  
Antiguo 27-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Dame el concepto matematico de esto, no lo entiendo.
Creo que va asi:
Base Imponible + IVA - Descuento = Total
Es asi ???
Quieres hacer la operacion y si te apetece, lo grabas o no.??
Saludos
Responder Con Cita
  #116  
Antiguo 27-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Delphitest
Trabaje un rato en lo de las sumas, va bien pero tengo un problema con los tipos de datos de la base de datos, tendras que verificarlo tu, si te parecen los cambios pon otro adelanto, con la base de datos completa.
Veras que he puesto dos botones, uno calcula el importe del albaran y otro suma todo, base importe + iva - descuentos = Total.
Bueno por hoy me canse, nos vemos el lunes, en linea.
Aqui te envio los cambios, revisalos y corre el programa para que los entiendas mejor.
Aqui esta:
http://rapidshare.com/files/934431/Projects.zip.html
Saludos y buen fin de semana
Responder Con Cita
  #117  
Antiguo 31-10-2006
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
Hola delphitest

¿podrías poner las fórmulas que usas para hacer los cálculos del albarán? Yo no tengo muchos conocimientos de contabilidad. Tampoco se que es la base imponible.

¿Como hago para cargar los datos de una tabla por partes?
Caral dijo algo sobre eso hace unos días.

Tengo una tabla con 1.5 millones de registros y si un programa los lee todos a la vez va a resultar extremadamente lento.

saludos
Responder Con Cita
  #118  
Antiguo 31-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Hola Robert, ¿Qué tipo de operación quieres hacer?, ¿afectaría a todos los registros?

Lo normal sería hacerlo por una consulta (TQuery), donde se restrinja los datos:
Código SQL [-]
select * from tabla where codigoCliente = 23

Aunque estamos seleccionando todos los campos (columnas) de la tabla, esa consulta debería ser muy rápida, ya que afectará a 1 registro. Incluso afectando a 1.000 clientes, debe ser inmediato.

Lo normal es acelerar las búsquedas creando índices secundarios (sobre los campos de búsqueda), a menos que sean clave primaria, que entonces, ya llevan un índice.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #119  
Antiguo 31-10-2006
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
hola lepe

con repecto a la búsqueda es para encontrar personas digamos que empiezan con una letra, sílaba o dos sílabas en un campo donde está apellido, nombres y direcciones. Yo buscaría por el apellido.

Si trato de ordenar por el mismo tarda mucho en hacerlo entonces creo que la alternativa es filtrar sin ordenar.

Por lo que dijeron antes si el programa lee todos los datos de la tabla va a ser muy lento pero no se cuanto

saludos
Responder Con Cita
  #120  
Antiguo 31-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Robert 01
Como dice lepe, se puede hacer una consulta con sql y es realmente rapida, tambien puedes hacer una consulta con sql y filtrarla para encontrar los datos segun quieras, por ejemplo, digamos que tienes una tabla que se llama clientes y un campo que se llama apellido que es el que quieres filtrar entonces haces una consulta y un filtro de la misma en un query, asi:
Colocas un query y en el evento oncreate del form pones esto:
Código Delphi [-]
   Query1.clear;
   Query1.sql.Text:= 'Select apellido from clientes';
   Query1.Open;
Tambien lo puedes poner en otro evento el que te convenga.

Ademas pones un edit en el form y en el evento OnChange del edit pones esto:
Código Delphi [-]
var
   Filtro : String;
begin
      If (Edit1.Text <> '') then
   begin
      Query1.Filtered := False;
      Filtro := 'apellido Like '''+ Edit1.Text + '*'''
      Query1.Filter := Filtro;
      Query1.Filtered := True
Con esto la consulta esta hecha en sql y es rapida y el filtro esta hecho en el edit, con este ira buscando en apellido por la primera letra que introduzcas.
Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejecutar Query Paso a Paso??? juliopag1 SQL 0 17-06-2006 01:51:10
Novato (Paso a Paso de una consulta) enecumene Conexión con bases de datos 2 29-05-2006 20:52:19
Motor Paso a Paso jluisx C++ Builder 3 12-09-2005 16:48:07
Red Paradox paso a paso Aldo Josué Conexión con bases de datos 2 13-12-2003 13:53:37
procedure paso a paso Silver Varios 1 26-08-2003 20:24:00


La franja horaria es GMT +2. Ahora son las 10:26:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi