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!
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).
- Anónimoahora mismo
Respuesta de denciso
1
1
denciso, Soy una persona multifacética, tanto manejo la informática,...
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]