Error al ejecutar un código en Visual Basic

Quiero ejecutar en código Visual Basic, INSERT INTO para introducir datos en una tabla, yo pongo esto:
INSERT INTO Eventos(CODEMPRE,SUCESO,FECHAAVISO,EVENTO,TIPO)
VALUES(Me![CODEMPRESA], Me![SUCESO], Fecha, Me![EVENTO], Me![TIPO])
Y me pone en Eventos que se esperaba fin de instrucción, y no sé porque!

2 respuestas

Respuesta
1
Mi consejo es que en lugar de crear ese código, crees una consulta de datos añexados en el campo: haces click con el botón derecho y luego generar formularios etc. (creo que sabes manejar este tipo de consultas. El código que me envías es correcto, pero para evaluarlo mandame todo el evento desde el
Sub...
hasta el
END
Este es el código que se me ha ocurrido para poder hacer lo que necesitaba, de esta forma si me hace lo que quiero, lo que he hecho es primero introducir el dato en el formulario y luego ejecutar la consulta desde access ya que en la primera parte de este código calculo una fecha que necesito para introducirla el la BD, pero lo que no entiendo es porque no me dejaba hacer el insert into directamente. Muchas gracias!
On Error GoTo Err_Comando11_Click
'Esta es la parte donde volvemos a meter en la tabla Eventos el registro a borrar
'en caso de que sea de tpio ANALÍTICA
If (Me![SUCESO] = "ANALITICA") Then
'sumar siete dias he tenido en cuenta pasar de mes
If (Me![TIPO] = "SEMANAL") Then
Dia = Format(Me![FECHAAVISO], "DD")
Mes = Format(Me![FECHAAVISO], "MM")
If Mes = 12 Then
If (Dia + 7 > 30) Then
Dia = ((Format(Me![FECHAAVISO], "DD") + 7) Mod 30)
FECHA = ((Format(Me![FECHAAVISO], "DD") + 7) Mod 30) & "/" & (Format(Me![FECHAAVISO], "MM") - 11) & "/" & (Format(Me![FECHAAVISO], "yyyy") + 1)
'MsgBox (FECHA)
Else
FECHA = (Format(Me![FECHAAVISO], "DD") + 7) & "/" & Format(Me![FECHAAVISO], "MM") & "/" & Format(Me![FECHAAVISO], "yyyy")
'MsgBox ("Dia1 " & Fecha)
End If
Else
If (Dia + 7 > 30) Then
Dia = ((Format(Me![FECHAAVISO], "DD") + 7) Mod 30)
FECHA = ((Format(Me![FECHAAVISO], "DD") + 7) Mod 30) & "/" & (Format(Me![FECHAAVISO], "MM") + 1) & "/" & Year(Me![FECHAAVISO])
'MsgBox (Fecha)
Else
FECHA = (Format(Me![FECHAAVISO], "DD") + 7) & "/" & Format(Me![FECHAAVISO], "MM") & "/" & Year(Me![FECHAAVISO])
'MsgBox ("Dia1 " & Fecha)
End If
End If
Else
If (Me![TIPO] = "ANUAL") Then
FECHA = Format(Me![FECHAAVISO], "DD") & "/" & Format(Me![FECHAAVISO], "MM") & "/" & (Format(Me![FECHAAVISO], "yyyy") + 1)
'MsgBox (Fecha)
Else
'He tenido en cuenta cuando sea el mes 12
Mes = Format(Me![FECHAAVISO], "MM")
If Mes = 12 Then
FECHA = Format(Me![FECHAAVISO], "DD") & "/" & (Format(Me![FECHAAVISO], "MM") - 11) & "/" & (Format(Me![FECHAAVISO], "yyyy") + 1)
'MsgBox (Fecha)
Else
FECHA = Format(Me![FECHAAVISO], "DD") & "/" & (Format(Me![FECHAAVISO], "MM") + 1) & "/" & Year(Me![FECHAAVISO])
'MsgBox ("Fecha1" & Fecha)
End If
End If
End If
'Ahora tenemos que volver a insertar un nuevo registro para que nos avise
'cuando tenemos que volver a hacer la analítica
Me![FECHAAVISO] = FECHA
DoCmd.OpenQuery "Insertarotravez"
End If
'BORRAR
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_Comando11_Click:
Exit Sub
Err_Comando11_Click:
MsgBox Err.Description
Resume Exit_Comando11_Click
End Sub
En lugar de Format(fecha,"xx") utiliza las funciones day(fecha), month(fecha) y year(fecha) -según la version access también en castellano día, mes, año - son más cortas y visuales. Y ten cuidado con las fechas a veces y sin saber porque cambia del formato español (dd/mm/aa) al inglés (mm/dd/aa).
Respuesta
1
Creo que tu problema radica en lo siguiente:
La instrucción
INSERT INTO Eventos(CODEMPRE,SUCESO,FECHAAVISO,EVENTO,TIPO) VALUES(Me![CODEMPRESA],Me![SUCESO],Fecha,Me![EVENTO],Me![TIPO])
Debe de tener una comilla sencilla por lo menos en los campos que son de tipo string, ejemplo:
INSERT INTO Eventos(CODEMPRE,SUCESO,FECHAAVISO,EVENTO,TIPO)
values(me![codempresa], me![suceso],"20020505", me![evento], me![tipo])
Para que sea mejor: los campos numéricos no llevan comilla, las fechas, los strings si lo llevan.
e-mail: [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas