Access - Cadena SQL no válida

 
Vista:

Cadena SQL no válida

Publicado por Adrián (17 intervenciones) el 16/03/2009 21:53:07
Hola, trato de hacer una consulta SQL pero Access me devuelve que es una cadena SQL no válida y que se esperaba INSERT, DELETE, UPDATE o SELECT. Me pueden decir primero si la instrucción se puede usar en Access, es la instrucción IF EXISTS. Se las paso a la cadena para que la vean y que me ayuden por favor. Desde ya muchas gracias.

IF EXISTS (SELECT * FROM ItemsPresupuestos WHERE IdItem = 682) UPDATE ItemsPresupuestos SET MontoUnitItem = 1, CantItem = 1, PdE = 1, IdFdP = 2, Descuento1 = 0, Descuento2 = 0, DescripItem = 'item1 presup 3134.' WHERE IdItem = 682 ELSE INSERT INTO ItemsPresupuestos (IdPresup,MontoUnitItem,CantItem,PdE,IdFdP,Descuento1,Descuento2,DescripItem,ItemAprobado) VALUES (3134,1,1,1,2,0,0,'item1 presup 3134.',0)
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

RE:Cadena SQL no válida

Publicado por Enrique (1299 intervenciones) el 17/03/2009 15:48:51
Que yo sepa no se puede utilizar "IF EXISTS" para comprobar si una consulta devuelve o no registros. Prueba de esta otra forma:

Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset ("SELECT * FROM ItemsPresupuestos WHERE IdItem = 682")
If rst.RecordCount > 0 Then
CurrentDb.Execute "Update ItemsPresupuestos SET ............"
Else
MsgBox "Actualización cancelada.", vbInformation, "No hay datos para actualizar"
Exit Sub
End If

En el caso de encontrar al menos un registro que cumpla la condición, se ejecutará la consulta de actualización por código, caso contrario no hace nada.
Ahora habría que ver si todo lo que va después de UPDATE está bien construido (no me voy a parar a comprobarlo).

No olvides marcar la Referencia: Microsoft DAO 3.6 Object Library en la ventana de Referencias de VBA.

Un saludo
Enrique
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

RE:Cadena SQL no válida

Publicado por Adrián (17 intervenciones) el 17/03/2009 18:46:45
Gracias Enrique, voy a usar la solución que me propones es mas limpia. Mil gracias.
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