Office - agregar registros automáticamente en access 2007

   
Vista:

agregar registros automáticamente en access 2007

Publicado por Jose (4 intervenciones) el 29/06/2016 15:06:47
Buenas tardes,

os cuento, Tengo un formulario con la cabecera de factura(tabla 1), sub-formulario con las lineas(tabla 2) y los datos de clientes en otra tabla (tabla 3).

Me gustaría que una vez al mes se genere automáticamente una factura por cada cliente, con un concepto y importe que tiene cada cliente en su ficha para después imprimir.

No tengo mucha experiencia en access. Espero me puedan ayudar.

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

agregar registros automáticamente en access 2007

Publicado por Tresy (44 intervenciones) el 06/07/2016 22:12:30
Hola: Olvida el Form y el SubForm. Tendrías que hacer un Informe con su SubInforme, tal cual has hecho con el Form y el Subform.
Al enviar a imprimir, cada factura aparecerá a continuación de la otra.
Creo, y es una práctica conveniente que almacenes estas facturas con sus correspondientes datos en sendas tablas Históricas: una para la cabecera y la otra para el detalle. Esto lo haces con sendas consultas de datos anexados. Estas consultas y la impresión puedes ejecutarlo desde un botón ubicado en un panel de control.
Busca el libro Bussines Intelligence de Editorial Users, Buenos Aires, Argentina, en el que encontrarás todo lo que puedes necesitar saber sobre Access.
Cuando puedas migra a Office 365, es decir, a las versiones 2016 de Access, Excel etc...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

agregar registros automáticamente en access 2007

Publicado por Jose (4 intervenciones) el 07/07/2016 00:26:02
Gracias Tresy!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

agregar registros automáticamente en access 2007

Publicado por Jose (4 intervenciones) el 22/07/2016 13:12:08
Buenas tardes,
Después de buscar mucho en internet y consejos lo he solucionado con este pequeño código vba.
Previamente he creado una tabla con los campos básicos para la factura,
Cuando se ejecuta el código, pide la fecha de facturación y concepto en factura.
Después busca todos los clientes en la tabla de clientes y va generando una factura por cada uno.
Básico pero funciona.
Me gustaría que me ayudaran en lo siguiente;
Como puedo en el momento de pedir la fecha o concepto anular la ejecución y que no se genere nada en la tabla de destino?
Como puede poner la fecha del día que se ejecuta como default?
Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Private Sub Comando107_Click()
 
    DoCmd.SetWarnings False
    Dim Rst1 As DAO.Recordset, Rst2 As DAO.Recordset
    'Definimos sendas variables para referirnos a los
    'conjuntos de registros correspondientes a las dos tablas
 
    Dim Message, Title, Default, MyValue
    Dim vDatoMes As Variant
 
    Set Rst1 = CurrentDb.OpenRecordset("Basedatos")
    Set Rst2 = CurrentDb.OpenRecordset("FacturaMes")
    'Abrimos las dos tablas asignándo sus registros a las variables
    'siendo el primero el que corresponde a la tabla origen
    'y el segundo a la de destino.
    
    Dim TheString As String, TheDate As Date
    TheString = InputBox("Introduce fecha de factura (Formato ??/??/????)")
    If IsDate(TheString) Then
    TheDate = DateValue(TheString)
    Else
    MsgBox "Invalid date"
    End If
    
    Message = "Introduzca concepto en factura"  ' Set prompt.
    Title = "Facturacion Automatica"    ' Set title.
    Default = ""    ' Set default.
    ' Display message, title, and default value.
    MyValue = InputBox(Message, Title, Default)
 
    If MyValue <> vbNullString Then
           
    Do While Not Rst1.EOF
        'Para cada registro de la tabla origen
 
            Rst2.AddNew     'Añadimos un registro en la
                            'tabla destino
 
            Rst2!Fecha = TheDate   'Asignamos valores a los campos
            Rst2!CodigoCliente = Rst1!Codigo_Cliente   'Asignamos valores a los campos
            Rst2!Concepto = MyValue   'Asignamos valores a los campos
            Rst2!Importe = Rst1!Cuota  'Asignamos valores a los campos
 
            Rst2.Update     'Grabamos el registro
        
        Rst1.MoveNext       'Pasamos al siguiente registro de la tabla origen
        DoEvents            'Por si acaso
    Loop
 
    Rst1.Close  'Cerramos los recordsets
    Rst2.Close
 
    Else
 
    MsgBox ("Cancelado por usuario!")
 
    End If
 
    Set Rst1 = Nothing  'Vaciamos las variables
    Set Rst2 = Nothing
    
    DoCmd.SetWarnings True
    MsgBox "Facturas generadas correctamente", vbInformation, "OK"
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

agregar registros automáticamente en access 2007

Publicado por Jose (4 intervenciones) el 22/07/2016 13:12:53
Buenas tardes,
Después de buscar mucho en internet y consejos lo he solucionado con este pequeño código vba.
Previamente he creado una tabla con los campos básicos para la factura,
Cuando se ejecuta el código, pide la fecha de facturación y concepto en factura.
Después busca todos los clientes en la tabla de clientes y va generando una factura por cada uno.
Básico pero funciona.
Me gustaría que me ayudaran en lo siguiente;
Como puedo en el momento de pedir la fecha o concepto anular la ejecución y que no se genere nada en la tabla de destino?
Como puede poner la fecha del día que se ejecuta como default?
Gracias.

Private Sub Comando107_Click()

DoCmd.SetWarnings False
Dim Rst1 As DAO.Recordset, Rst2 As DAO.Recordset
'Definimos sendas variables para referirnos a los
'conjuntos de registros correspondientes a las dos tablas

Dim Message, Title, Default, MyValue
Dim vDatoMes As Variant

Set Rst1 = CurrentDb.OpenRecordset("Basedatos")
Set Rst2 = CurrentDb.OpenRecordset("FacturaMes")
'Abrimos las dos tablas asignándo sus registros a las variables
'siendo el primero el que corresponde a la tabla origen
'y el segundo a la de destino.

Dim TheString As String, TheDate As Date
TheString = InputBox("Introduce fecha de factura (Formato ??/??/????)")
If IsDate(TheString) Then
TheDate = DateValue(TheString)
Else
MsgBox "Invalid date"
End If

Message = "Introduzca concepto en factura" ' Set prompt.
Title = "Facturacion Automatica" ' Set title.
Default = "" ' Set default.
' Display message, title, and default value.
MyValue = InputBox(Message, Title, Default)

If MyValue <> vbNullString Then

Do While Not Rst1.EOF
'Para cada registro de la tabla origen

Rst2.AddNew 'Añadimos un registro en la
'tabla destino

Rst2!Fecha = TheDate 'Asignamos valores a los campos
Rst2!CodigoCliente = Rst1!Codigo_Cliente 'Asignamos valores a los campos
Rst2!Concepto = MyValue 'Asignamos valores a los campos
Rst2!Importe = Rst1!Cuota 'Asignamos valores a los campos

Rst2.Update 'Grabamos el registro

Rst1.MoveNext 'Pasamos al siguiente registro de la tabla origen
DoEvents 'Por si acaso
Loop

Rst1.Close 'Cerramos los recordsets
Rst2.Close

Else

MsgBox ("Cancelado por usuario!")

End If

Set Rst1 = Nothing 'Vaciamos las variables
Set Rst2 = Nothing

DoCmd.SetWarnings True
MsgBox "Facturas generadas correctamente", vbInformation, "OK"
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar