Actualización automática de segmentos de una tabla a otra con un macro en access

Como dice el titulo intento hacer el macro para actualizar los datos de una tabla "DailySurvey_SP" donde indico los intervalos de varios indicadores llamados lineas (Ejm: Linea 1, se hizo la revision desde el punto 15 al 30, linea 2 se hizo la revision desde los puntos 20 al 40, etc) este dato se debe actualizar en una tabla base que se llea "SourceLine", donde estan dichas lineas con el listado de cada punto (osea 1, 2, 3, ..., 50,... Etc.)
El macro que compile es el que muestro debajo
Sub ImportSurvey_prod()
Dim rstUpdSurvey As Recordset
DoCmd.SetWarnings (False)
Set rstUpdSurvey = CurrentDb.OpenRecordset("DailySurvey_SP")
rstUpdSurvey.MoveFirst
'Dia = Format(rstUpdSurvey!Date, "dd/mm/yy")
Do
SQL = "UPDATE SourceLine SET SourceLine.SurveyDailyDate = ' & rstUpdSurvey.SurDate & ', SourceLine.SurveyDailyCrew = ' & rstUpdSurvey.Crew & ', SourceLine.SurveyCrewSet = ' & rstUpdSurvey.CrewSet & ', SourceLine.CodeProduction = '2000' " & _
"WHERE (((SourceLine.SurveyDailyDate) Is Null) AND ((SourceLine.CodeProduction)='1000') AND ((SourceLine.PreLine)= " & rstUpdSurvey!Salvo & ") AND ((SourceLine.PostStation)>=" & rstUpdSurvey!FirstSP & " And (SourceLine.PostStation)<=" & rstUpdSurvey!LastSP & "));"
DoCmd.RunSQL SQL
rstUpdSurvey.MoveNext
Loop Until IsNull(rstUpdSurvey!Crew)
DoCmd.SetWarnings (True)
MsgBox "Source survey production updated!!!", vbInformation, "Finalizada la Actualización", 0, 0
End Sub
Cuando lo ejecuto, me sale el error 3464 "no coinciden los datos en la expresion de criterios", le doy depurar y me resalta "DoCmd.RunSQL SQL", revise muchas veces los nombres y todo esta correcto.

1 respuesta

Respuesta
1

Si el campo es de texto: '" & ..... & "'

Si es numérico: " & ..... & "

Si es de fecha: cDate('" & ..... & "')

Buen día Experta,

Hice los cambios respectivos, y me voto varios errores, todo lo es comillas le reemplace por ' ..y asi medio corrio pero de todas maneras sigue diciendo q hay un error en el SQL.

Me parece que en la parte de las condiciones Where, mire me quedo asi:

Sub ImportSurvey_prod()
Dim rstUpdSurvey As Recordset
DoCmd.SetWarnings (False)
Set rstUpdSurvey = CurrentDb.OpenRecordset("DailySurvey_SP")
rstUpdSurvey.MoveFirst
Dia = Format(rstUpdSurvey!SurDate, "dd/mm/yy")
SQL = "UPDATE SourceLine SET SourceLine.SurveyDailyDate = #" & Dia & "#, SourceLine.SurveyDailyCrew = ' & rstUpdSurvey.Crew & ', SourceLine.SurveyCrewSet = ' & rstUpdSurvey.CrewSet & ', SourceLine.CodeProduction = 2000 " & _
"WHERE (((SourceLine.SurveyDailyDate) Is Null) AND (SourceLine.CodeProduction=1000) AND (SourceLine.PreLine= '" & rstUpdSurvey!Salvo & "') AND ((SourceLine.PostStation) >= '" & rstUpdSurvey!FirstSP & "' And (SourceLine.PostStation)<= '" & rstUpdSurvey!LastSP & "'));"
DoCmd.RunSQL SQL
rstUpdSurvey.MoveNext
Loop Until IsNull(rstUpdSurvey!Crew)
DoCmd.SetWarnings (True)
MsgBox "Source survey production updated!!!", vbInformation, "Finalizada la Actualización", 0, 0
End Sub

en los Campos rstUpdSurvey!LastSP y rstUpdSurvey!FirstSP, voy a tener diferentes rangos de numeros

Crew Set Salvo FirstSP LastSP SurDate

1 1 2 3020 3030 22/04/2013

1 2 3 1500 1600 22/04/2013

Y la Sourceline tendra los campos donde se va actualizar lo de la tabla de arriba

Crew Set Salvo SP SurDate

1 1 2 3020 22/04/2013
1 1 2 3021 22/04/2013
1 1 2 3022 22/04/2013
1 1 2 3023 22/04/2013

.

.

.

1 1 2 3100 22/04/2013


Muchas gracias por su ayuda

Dannisjor

¿Los campos firstsp, lastsp y sp son numéricos o de texto? Y surdate ¿es de tipo fecha?

Hola Angeles,

Todos los campos son numéricos, a excepción de la fecha.

Muchas gracias

Dannisjor

Si los campos son numéricos tendrás que quitar la comilla simple, que es el indicador de texto, sería: " &

Para el campo fecha, lo mejor es tratarlo como te to y pasarlo a fecha con la función cDate()

Para tratarlo como fecha tendrás que utilizar la comilla simple: '" &

cDate('" & Día & "')

Hola Angeles,

Quizas no me explique bien en la segunda aclaracion, si le habia cambiado la doble comilla en los campos numericos como lo habias sugerido al incio, pero entonces el error me saltaba mas antes, desde el primer campo del codigo de la consulta, y cuando ponia el curso sobre cada campo ya ni los reconocia; entonces campo a campo fui cambiando de nuevo la doble comilla por la comilla simple y conforme le iba cambiando, el error fue avanzando, hasta llegar de nuevo al error en "DoCmd.RunSQL SQL"

Disculpa las molestias.

Dannisjor

¿Puedes mandarme la Bd en access 2003 para echarla un vistazo a la sql...?

[email protected]

Hola Angeles, ya te envíe la mdb y accbd, al email.

Muchas gracias

Dannisjor

De acuerdo, ahora lo miro.

Te volví a enviar las tablitas.

Gracias

Lo siento, me había olvidado del tema.

Esta tarde lo miro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas