
[RESUELTO] como hacer campo calculado en access
#21
Posted 28 August 2011 - 04:05 PM
Uno que es Xmanifiest o algo asi.
No se si sera de las Indy.
Saludos
#22
Posted 28 August 2011 - 04:13 PM
#23
Posted 28 August 2011 - 04:16 PM
Bien, ya lo tengo.
Aparte de arreglar la conexion y de cambiar otras cosas que es lo que necesitas con la parte ue pedias.
Que en el dbdet6 salga el total de la suma del 4 y 5 cuando se mueve el dbnavigator ?.
Saludos
#24
Posted 28 August 2011 - 04:22 PM
#25
Posted 28 August 2011 - 04:29 PM
Bien, no me corre, se ejecuta pero no sale nada.
Lo voy a hacer todo de nuevo (vale que es poco codigo).
Dame unos minutos.
Saludos
#26
Posted 28 August 2011 - 04:37 PM
#27
Posted 28 August 2011 - 04:57 PM
Sigueme:
1: En el datamodule.
Presiona el adconnection y en la propiedad LoginPromt ponla en false.
2: Dale doble click a la parte blanca del datamodule, ahi estaras en el evento Oncreate.
Coloca esto:
Var BaseDeDatos, ConStr : String; IniFile: TIniFile; begin // Obtiene la ruta y el nombre de la base de datos IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName)+'BDatos.ini'); BasedeDatos := IniFile.ReadString('BD','Path',''); If BasedeDatos = '' then ShowMessage('Error al cargar Base de Datos'); ConStr := 'Provider=Microsoft.Jet.OLEDB.4.0;'+ 'Data Source='+BaseDeDatos+';'+ 'Persist Security Info=False;'+ 'Jet OLEDB:Database Password=admin'; ADOConnection1.ConnectionString := ConStr; ADOConnection1.Open;
3: En el archivo INI que tienes (BDatos) coloca la direccion que tienes de la bd, creo que la tienes bien asi:
Corre el programa y me dices si ya te funciona el INI.[BD]
Path="C:\Documents and Settings\Administrador\Mis documentos\Relaccion_Factura_FArmacia\Facturacion.MDB"
[Logon]
Auto="No"
Login=""
Pass=""
Recuerda que el archivo BDatos tiene que estar en el mismo directorio que el ejecutable, osea el programa principal.
Veamos esta primera parte y me dices.
Saludos
#28
Posted 28 August 2011 - 05:17 PM
#29
Posted 28 August 2011 - 05:24 PM
Vamos con el form APSR:
Ahi es donde quieres hacer el calculo, verdad?.
Tienes tres DBEdits, 4, 5 y 6.
Estos estan enlazados al los campos ValorARS, Dif_Asegurado, ValorTotal.
Al estar enlazados los valores salen, solo cuando se insertan nuevos se ponen en Blanco.
Estamos ?.
Si quieres que el valor salga cuando cambies el valor de los dbedits del 4 y del 5 tienes que especificar que este en el modo de insercion y se puede hacer o bien desde el dataset o en el dbedit 5 que seria el ultimo en recibir el valor.
Otra opcion seria usar edits normales.
Tu dime que quieres ?.
Saludos
#30
Posted 28 August 2011 - 05:34 PM
#31
Posted 28 August 2011 - 05:41 PM
No es mas facil o mas dificil, es mas codigo ya que hay que primero enlazar los edits al dataset, esto para que cuando se presente la informacion se vea como si fuera un dbedit, luego se necesita hacerlo al revés, que cuando se escriba se actualice el dataset.
Te voy a dar la opcion de los dbedits, si no te gusta lo hacemos con edits, te parece?.
Saludos
#32
Posted 28 August 2011 - 05:49 PM
#33
Posted 28 August 2011 - 06:07 PM
Que bueno, por que no tengo ganas de hacer mucho codigo


Primero piensa en una cosa:
Cuando se presiona el boton de insertar del dbnavigator se ponen los DBEdits en blanco, osea, Blanco, nada.
Si no se coloca la suma en el evento adecuado o no se especifica que este en cero (0) saldra un error ya que no se puede sumar un numero con nada.
Para evitar eso lo que hacemos es indicar:
1: que el dataset este en modo insercion.
2: que si esta en insercion tanto el dbedit 4 como el 5 esten en cero, siempre y cuando no se coloque un numero.
3: que los sume y coloque en el dbedit 6 el resultado.
Bien:
Colocate en el datasource.
En el evento ONStateChange coloca esto:
If ADOTable1.State = dsInsert then begin If (DBEdit4.Text = '') or (DBEdit5.Text = '') then begin DBEdit4.Text:= '0'; DBEdit5.Text:= '0'; end; end;
Si esta en modo insercion y estan lo dbedits en blanco los pondra con un cero, esto evitara errores.
Ahora en el mismo datasource en el evento OnDatachange coloca esto:
DBEdit6.Text := IntToStr(StrToInt(DBEdit4.Text) + StrToInt(DBEdit5.Text));
Recuerda que estamos hablando de campos integer.
A ver que pasa, dime como va.
Saludos
#34
Posted 28 August 2011 - 06:24 PM
muchas gracias amigo
#35
Posted 28 August 2011 - 06:30 PM
#36
Posted 28 August 2011 - 06:52 PM
El QReport esta dentro del form, eso esta raro, por lo menos a mi no me gusta, yo lo haria como un form mas.
Cambia esto:
En el string del adoquery dejalo en blanco y pon esto en el boton buscar y en el evento onchange del datetimepicker:
procedure TAPS.BitBtn1Click(Sender: TObject); begin ADOquery1.Close; ADOquery1.sql.text:= 'SELECT * FROM ars_aps '+ 'WHERE Fecha >= :MiParametro1 AND Fecha <= :MiParametro2'; ADOQuery1.Parameters.ParamByName('MiParametro1').Value := DateToStr(DateTimePicker1.Date); ADOQuery1.Parameters.ParamByName('MiParametro2').Value := DateToStr(DateTimePicker2.Date); ADOquery1.Open; end; procedure TAPS.DateTimePicker2Change(Sender: TObject); begin ADOquery1.Close; ADOquery1.sql.text:= 'SELECT * FROM ars_aps '+ 'WHERE Fecha >= :MiParametro1 AND Fecha <= :MiParametro2'; ADOQuery1.Parameters.ParamByName('MiParametro1').Value := DateToStr(DateTimePicker1.Date); ADOQuery1.Parameters.ParamByName('MiParametro2').Value := DateToStr(DateTimePicker2.Date); ADOquery1.Open; end;
Creo que es esto lo que preguntas.
Saludos
#37
Posted 28 August 2011 - 08:40 PM
#38
Posted 28 August 2011 - 10:01 PM
#39
Posted 29 August 2011 - 09:31 AM
No entiendo a que te refieres ?.
Saludos
#40
Posted 29 August 2011 - 10:44 AM
que tenga la opcion de coger la Tabla donde se guardaran los datos. porque mi bd tienes varias tablas?