Access - Ejecutar consulta de actalización con Vba

 
Vista:
Imágen de perfil de Salvador
Val: 46
Ha disminuido su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

Ejecutar consulta de actalización con Vba

Publicado por Salvador (94 intervenciones) el 09/05/2020 19:02:28
Tengo una consulta que el generador de consultas de Access me genera el siguiente SQL
1
2
3
4
INSERT INTO Clientes ( Codigo, Empresa, Nif, Contacto, Domicilio, CodigoPostal, Poblacion, Provincia, Phone, Fax, Observaciones, email, PhoneMovil )
SELECT OldClientes.Codigo, OldClientes.Empresa, OldClientes.Nif, OldClientes.Contacto, OldClientes.Domicilio, OldClientes.CodigoPostal, OldClientes.Poblacion, OldClientes.Provincia, OldClientes.Phone, OldClientes.Fax, OldClientes.Observaciones, OldClientes.email, OldClientes.PhoneMovil
FROM OldClientes
WHERE (((OldClientes.Codigo)>89999));
Como puedo ejecutar esta consulta con vba.

Saludos, a gracias de antemano
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

Ejecutar consulta de actalización con Vba

Publicado por jose (830 intervenciones) el 10/05/2020 09:50:51
REM CON ADO------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'Dim rs As Recordset
'Dim CON As Connection
 
Rem BUSCA
Set rs = CreateObject("ADODB.RecordSet")
Set CON = Application.CurrentProject.Connection
     C10 = ""
 
 
       C10 = C10 & "NSERT INTO Clientes ( Codigo, Empresa, Nif, Contacto, Domicilio, CodigoPostal, Poblacion, Provincia, Phone, Fax, Observaciones, email, PhoneMovil ) "
 
 C10 = C10 & " SELECT OldClientes.Codigo, OldClientes.Empresa, OldClientes.Nif, OldClientes.Contacto, OldClientes.Domicilio, OldClientes.CodigoPostal, OldClientes.Poblacion, OldClientes.Provincia, OldClientes.Phone, OldClientes.Fax, OldClientes.Observaciones, OldClientes.email, OldClientes.PhoneMovil "
 
       C10 = C10 & " FROM OldClientes "
 
       C10 = C10 & " WHERE (((OldClientes.Codigo)>" & STR$(89999) & ")); "

NOTAS ACLARATORIAS
NOTA LOS NUMEROS EN LA CADENA SE PONEN ......" & STR$(NUMERO) & "......
NOTA LOS STRING O VARIABLES ALFANUMERIDCAS EN LA CADENA SE PONEN ......'" & VARIABLE & "'...... FIJATE ' " Y " ' COMILLA SIMPLE Y DOBLE
NOTA LAS FECHAS .......#" & FECHA & "# ....... NOTA LA FECHA EN FORMA AMERICANA MM DD YYY EJ FORMAT(FECHA, "MM/DD/YYYY")

SI LA VARIABLE ESTA EN EL FORMULARIO
Forms![nombre-formulario]![campo-del-formulario]
DATOS DE UN SUBFORMULARIO
Forms![nombre-formulario]![Subformulario-nombre].Form![campo-del-subformulario]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
consulta = c10
 
rs.Open consulta, CON, adOpenDynamic, adLockOptimistic
 
If rs.EOF = False Then
                rs.MoveLast
                rs.MoveFirst
        End If
 
 
 Rem  bucle de recordset  para  saber en umero de  registros
                        CUENTA = 0
                        Do While rs.EOF = False
                            CUENTA = CUENTA + 1
                        rs.MoveNext
                        Loop
 
Texto55 = RS.Fields("ID-T060").Value
Texto56= RS.Fields(7).Value
 
 
RS.Close



UN EJEMPLO HECHO

REM CON ADO------------------------------------------
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
'Dim rs As Recordset
'Dim CON As Connection
 
Rem BUSCA
Set rs = CreateObject("ADODB.RecordSet")
Set CON = Application.CurrentProject.Connection
     C10 = ""
 
 
       C10 = C10 & " INSERT INTO MOVIMIENTOS ("
       C10 = C10 & " FECHA,"
       C10 = C10 & " NUMEASIENTO,"
       C10 = C10 & " CUENTA,"
       C10 = C10 & " DOCUMENTO,"
       C10 = C10 & " CONCEPTO,"
       C10 = C10 & " DEBE,"
       C10 = C10 & " HABER,"
       C10 = C10 & " TITULAR,"
       C10 = C10 & " TIPOASIENTO,"
       C10 = C10 & " ANNO )"
 
         C10 = C10 & "SELECT"
         C10 = C10 & " #" & Format(LFECHA, "mm/dd/yyyy") & "# AS Expr1,"
         C10 = C10 & " " & Str$(NUMASI) & " AS Expr2,"
         C10 = C10 & " '" & LCUENTA & "'AS Expr3,"
         C10 = C10 & " '" & Nz(LDOCUMENTO, " ") & "' AS Expr4,"
         C10 = C10 & "  '" & Nz(LCONCEPTO, " ") & "' AS Expr5,"
         C10 = C10 & "  " & Str$(Nz(LDEBE, 0)) & " AS Expr6,"
         C10 = C10 & " " & Str$(Nz(LHABER, 0)) & " AS Expr7,"
         C10 = C10 & "  " & Str$(Forms![FPRINCIPAL]![TIT]) & "  AS Expr8,"
         C10 = C10 & " '" & LTIPOASIENTO & "' AS Expr9,"
         C10 = C10 & "  '" & Forms![FPRINCIPAL]![an] & "' AS Expr10;"
 
        C10 = C10 & ""
 
   consulta = c10
 
rs.Open consulta, CON, adOpenDynamic, adLockOptimistic
 
If rs.EOF = False Then
                rs.MoveLast
                rs.MoveFirst
        End If
 
 
 Rem  bucle de recordset  para  saber en umero de  registros
                        CUENTA = 0
                        Do While rs.EOF = False
                            CUENTA = CUENTA + 1
                        rs.MoveNext
                        Loop
 
Texto55 = RS.Fields("ID-T060").Value
 
 
 
RS.Close
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

Ejecutar consulta de actalización con Vba

Publicado por Anonimo (3308 intervenciones) el 10/05/2020 11:27:02
Las consultas se ejecutan (desde VBA) así:


1
DoCmd.OpenQuery ……


Hay mas posibles vías, pero para ello habría que 'trasvasar' el contenido de esa consulta (que es una SQL con todos sus atributos) a una cadena de texto y después (en VBA):

1
DoCmd.RunSql "..... aquí estaría esa cadena de texto adecuadamente modificada si hubiera necesidad …. "
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