Incluir un valor calculado por código VBA mediante SQL
Me hallo realizando una base de datos para la gestión de muestras de un laboratorio.
Las muestras, llegadas a cierto punto se almacenan.
Para ello se les asigna un identificador definido por la bandeja donde se archivan y su posición en esta y mediante SQL crea un nuevo registro en la tabla "Archivo_Muestras" donde registra el ID_Archivo, ID_Muestra (que hace referencia a la tabla de registro general) y la hora a la que se ha registrado.
Este proceso se hace desde un botón en un formulario de visualización de la muestra, que es de donde coge el dato ID_Muestra
El identificador, así como el cambio de bandeja cada 18 posiciones (es su capacidad máxima), lo he definido mediante el código al que llamo desde el botón:
Dim ultband As String
Dim newband As String
Dim ultpos As String
Dim ultID As String
Dim ID_Archivo As String
Dim inicio As String 'No consigo que haga lo que quiero como numero, asi que lo incluyo como cadena
inicio = "01"
ultID = DMax("Val(Mid(ID_Archivo, 1, 6))", "Archivo_Muestras")
ultband = DMax("Val(Mid(ID_archivo, 1, 4))", "Archivo_Muestras")
ultpos = Right([ultID], 2)
newband = ultband + 1
If ultpos <> 18 Then
ID_Archivo = ultID + 1
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO Archivo_Muestras (ID_Archivo, ID_Muestra, Fecha_Archivo) VALUES (ID_Archivo, form!ID_Muestra, Now())"
DoCmd.SetWarnings True
MsgBox "Por favor guardar la nueva muestra en bandeja Nº " & ultband, vbExclamation, "Bandeja"
Else
ID_Archivo = [newband] & [inicio]
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO Archivo_Muestras (ID_Archivo, ID_Muestra, Fecha_Archivo) VALUES (ID_Archivo, form!ID_Muestra, Now())"
DoCmd.SetWarnings True
MsgBox "Se ha agotado la bandeja anterior. Por favor guardar la nueva muestra en bandeja Nº " & newband, vbExclamation, "Nueva Bandeja"
'Docmd.print... (Buscar comando para imprimir etiqueta para la nueva bandeja)
End If
End Sub
Cuando intento usarlo, Access me pide que introduzca el valor del parametro ID_Archivo
Entiendo que la sintaxis SQL no es correcta, ya que por lo que veo, no me está cogiendo el valor ID_Archivo calculado mediante código.
Si lo introduzco manualmente, crea el registro sin problema.