Access - Access VBA, SQL Statement, Update, Table = variable, error

 
Vista:
sin imagen de perfil
Val: 30
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Genaro (17 intervenciones) el 04/04/2017 17:13:51
Hello friends....

I'm trying to update 2 camps in one table.
IMPORTANT: Table name is a variable named TT, that adquieres it values from a condition if then end

I just need to update the fields....



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
Private Sub ImprimirFactura_Click()
 
If Me.Whatsapp & 99 = 99 And Me.Identificador & "99" = "99" Then Exit Sub
 
'BUSCAR si esta consulta ya tiene un NCF de algún tipo
Dim DBNCF As DAO.Database
Dim RSNCF As DAO.Recordset
Dim RS As DAO.Recordset2
 
Set DBNCF = CurrentDb
Set RSNCF = DBNCF.OpenRecordset("RS_NCF")
Set RS = DBNCF.OpenRecordset("Consulta_SubTotales")
 
RSNCF.MoveLast
RSNCF.MoveFirst
 
    RSNCF.FindFirst "Id = " & Forms!VentaRapida!Id & ""
 
    If RSNCF.NoMatch Then
 
    Else
        RS.MoveLast
        RS.MoveFirst
 
        RS.FindFirst "Id = " & Id & ""
 
        'If RS!SumaDeSubT_ITBIS - RSNCF!ITBIS > 0.01 Then NCFV_Update
        If RSNCF!TipoNCF = "Facturas que generan Crédito y Sustentan Costos y/o Gastos" Then TT = "NCF-VCF"
        If RSNCF!TipoNCF = "Facturas para Consumidores Finales" Then TT = "NCF-CF"
        If RSNCF!TipoNCF = "Regímenes Especiales de Tributación" Then TT = "NCF-RE"
        If RSNCF!TipoNCF = "Comprobantes Gubernamentales" Then TT = "NCF-Gob "
 
 
DBNCF.Execute "Update NCF-CF Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = @" & Id & ";"
DoCmd.RunSQL "Update NCF-CF Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = @" & Id & ";"
 
    End If
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

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Anonimo (3315 intervenciones) el 05/04/2017 00:08:23
Las variables deberian in fuera de las comillas (tal como se hace con 'Id').
La SQL es la misma se ejecute con el metodo RunSQL o Execute. Porque se repite esto? ....
Se le adjudica un valor a 'TT' pero no se utiliza despues ¿es esto correcto?

The variables should be in outside the quotation marks (as is done with 'Id').
The same SQL is executed with the RunSQL or Execute method. Why is this repeated? ....
Is awarded a value to 'TT' but is not used after is this correct?

Esto es un foro de español, por cortesia he traducido al ingles y espero que el moderador no lo elimine (es su decision)
This is a forum of Spanish, for courtesy I have translated into English and I hope that the moderator does not eliminate it (it is your decision)
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
sin imagen de perfil
Val: 30
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Genaro (17 intervenciones) el 05/04/2017 00:19:54
Caramba! Que tonto he sido!

Disculpen que escribí en un idioma ajeno. Es que en tecnología, uno asume que está en inglés.

Me alegro que estemos conectados los latinos.

Respondiendo.....
Está repetido el str de SQL para que vean que lo he intentado de varias maneras y aún así dice que hay un error.
Mi problema es que en el string del SQL, cuando digo que me afecte la tabla TT (que es una variable), me dice que no hay ninguna tabla llamada TT. O sea, toma literalmente la variable como nombre de tabla, en vez del valor string que representa.

Este:
"Update NCF-CF Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = @" & Id & ";"

Lo he escrito así también:
"Update TT Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = " & Id & " "
"Update TT Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = " & Id & " ;"
"Update "& TT & " Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = " & Id & " "
"Update "& TT & " " & "Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = " & Id & " "

y varias maneras más......y siempre me presenta algún error. Sea de sintaxis o de que no encuentra TT como tabla....
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

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Anonimo (3315 intervenciones) el 05/04/2017 03:09:03
Insisto en lo anterior, las variables han de ir 'fuera' de las comillas para que Access pueda evaluarlas, en otro caso seran literales.

Supongamos que 'TT' representa a una tabla
Tambien que 'ITBIS' sea otra variable con un valor cualquiera (pero adecuado al tipo de campo)
Asi mismo 'SubTotal' tambien sea otra variable que cumple las condiciones adecuadas y que ambas son numericas

Ahora tenemos esta expresion de texto que representa a una SQL:
"Update TT Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = " & Id & " "

La escribimos de forma correcta (y supondre qe 'Id' es un valor numerico)

"Update " & TT & " Set [ITBIS] =" & ITBIS & ", [Sub-Total] = " & SubTotal & " Where Id = " & Id

Si TT= "F-Gob", ITBIS = 123, SubTotal= 8888, Id = 98765

Al evaluarla Access quedaria asi:
"Update F-Gob Set [ITBIS] = 123, [Sub-Total] = 88888 Where Id = 98765"

Y se cumple que las 'variables' estaran fuera de las comillas (sus valores una vez sean evaluados ya no).

P.D.
Si Id o cualquera de esas variables fuera alfanumerica, se la deberia tratar de forma correcta, por ejemplo asi (para cualquiera de ellas de forma independiente):
Id = "abc123"

"Update " & TT & " Set [ITBIS] =" & ITBIS & ", [Sub-Total] = " & SubTotal & " Where Id = '" & Id & "' "

"Update F-Gob Set [ITBIS] = 123, [Sub-Total] = 88888 Where Id = 'abc123' "
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
sin imagen de perfil
Val: 30
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Genaro (17 intervenciones) el 05/04/2017 03:24:59
Wao!

Que agradecido estoy de la molestia que se ha tomado en una explicación tan buena!

La implementaré a primera hora!
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
sin imagen de perfil
Val: 30
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Genaro (17 intervenciones) el 05/04/2017 03:56:28
no....no funcionó.

Volvió a darme error de sintaxis...

Anadí estas líneas:

MsgBox "Update " & "'" & TT & "'" & " Set [ITBIS] =" & ITBIS & ", [Sub-Total] = " & SubTotal & " Where Id = " & Id
DoCmd.RunSQL "Update " & "'" & TT & "'" & " Set [ITBIS] =" & ITBIS & ", [Sub-Total] = " & SubTotal & " Where Id = " & Id

NOTA que el nombre de las tablas, lamentablemente y por inexperiencia cuando cree la base de datos, tiene un guión que podría traducirse como dos variables restando. NCF-CF, por ejemplo....

En el str de SQL, en donde TT es una variable, aparece entonces NCF-CF, sin comillas ni nada que ayude....
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

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Anonimo (3315 intervenciones) el 05/04/2017 10:48:39
Aun siendo consciente de que 'TT' es una variable de texto con el nombre de una tabla (o cualquier otro objeto de Access), en mis ejemplos no le he añadido comillas simples (peculiaridades de Access y que ese particular texto, tiene que ser un literal).


Te aconsejaria que:
Generases con datos 'reales' una consulta plenamente funcional (tras ello) y paso a paso la fueras modificando para sustituir los valores por variables.
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

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Anonimo (3315 intervenciones) el 05/04/2017 14:23:27
Utilizando la ventana de inmedito (para ver como queda la SQL), se han utilizado las expresiones publicadas y al final la propuesta asi como la que evita problemas con nombres poco adecuados.

TT= "NCF-CF"
ITBIS = 123
SubTotal= 567
Id= 890


? "Update NCF-CF Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = @" & Id & ";"
Update NCF-CF Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = @890;

?"Update TT Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = " & Id & " "
Update TT Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = 890

?"Update TT Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = " & Id & " ;"
Update TT Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = 890 ;

?"Update "& TT & " Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = " & Id & " "
Update NCF-CF Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = 890

?"Update "& TT & " " & "Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = " & Id & " "
Update NCF-CF Set [ITBIS] = ITBIS, [Sub-Total] = SubTotal Where Id = 890


..........

?"Update "& TT & " Set [ITBIS] = " & ITBIS & ", [Sub-Total] = " & SubTotal & " Where Id = " & Id

Update NCF-CF Set [ITBIS] = 123, [Sub-Total] = 567 Where Id = 890

'con nombres inadecuados se los encierra entre corchetes
?"Update ["& TT & "] Set [ITBIS] = " & ITBIS & ", [Sub-Total] = " & SubTotal & " Where Id = " & Id
Update [NCF-CF] Set [ITBIS] = 123, [Sub-Total] = 567 Where Id = 890
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
sin imagen de perfil
Val: 30
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Genaro (17 intervenciones) el 07/04/2017 23:47:22
Hola....y gracias a todos por ayudarme.....

Anonimo, me ayudaste mucho, pero sigue el mismo problema.

Este y todos los demás, me dan error de sintaxis
Update NCF-CF Set [ITBIS] = 123, [Sub-Total] = 567 Where Id = 890

Estoy tratando de que salga:
Update "NCF-CF" Set [ITBIS] = 123, [Sub-Total] = 567 Where Id = 890

Alguna idea?
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
sin imagen de perfil
Val: 30
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Genaro (17 intervenciones) el 08/04/2017 00:21:58
EUREKA!

Señores, ya lo he conseguido.!

Ha sido con la ayuda de Anonimo.....


?"Update ["& TT & "] Set [ITBIS] = " & ITBIS & ", [Sub-Total] = " & SubTotal & " Where Id = " & Id
Update [NCF-CF] Set [ITBIS] = 123, [Sub-Total] = 567 Where Id = 890
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

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Anonimo (3315 intervenciones) el 08/04/2017 00:40:04
Hay un caso en el que se precisaria un poco mas de codigo, y es el caso de utilizar decimales (solo los interpreta si el separador decimal es el punto y en la cofiguracion regional española se utilza la coma simple).
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
sin imagen de perfil
Val: 30
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Access VBA, SQL Statement, Update, Table = variable, error

Publicado por Genaro (17 intervenciones) el 08/04/2017 02:42:00
Gracias......eso lo he hecho con el comando Format()...

Gracias por su ayuda.....excelente!
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