Completar valores Null en campos fecha/hora y texto

Tengo una MDB que importa un txt con los albaranes introducidos en diferentes terminales de venta: Proveedor, nº_albarán, Fecha_albarán, cod_artic, deno_artic, unidades, p_costo y Total . El problema es que solo se rellena el campo nº_albarán (campo texto) y Fecha_albarán (campo Fecha/hora) en la primera columna de cada uno, el resto de las referencias del mismo albarán no muestran estos dos datos por lo que no puedo agruparlos por albarán, fecha y total (el txt muestra los mismos datos que la tabla, por lo que no es un problema de importación)Me indican que en VBA si se puede conseguir al importar el txt, pero mis conocimientos son muy básicos y no entiendo este lenguaje de programación. ¿Existe otro modo de hacer que en caso de valor Null tome el valor del mismo campo en la columna anterior?

1 respuesta

Respuesta
1
Ok te ayudo pero no me aclaro.
Voy a corregir algunas de tus palabras
y me dices si he acertado o no.En caso
Negativo corrígeme. Gracias.
Buenas tardes. Tengo una MDB que importa DE un txt QUE CONTIENE los albaranes introducidos en diferentes terminales de venta:CAMPOS o COLUMNAS... Proveedor, nº_albarán, Fecha_albarán, cod_artic, deno_artic, unidades, p_costo y Total . El problema es que solo se rellena EN EL TXT el campo nº_albarán (campo texto) y Fecha_albarán (campo Fecha/hora) en la primera FILA de cada uno, el resto de LOS REGISTROS O FILAS del mismo albarán NO muestran estos dos datos por lo que no puedo agruparlos UNA VEZ OBTENIDA LA TABLA por albarán, fecha y total (el txt muestra los mismos datos que la tabla, por lo que no es un problema de importación)Me indican que en VBA si se puede conseguir al importar el txt(COMENTARIO:QUE YO SEPA NO SE PUEDEN MANIPULAR LOS PARÁMETROS DE IMPORTACIÓN MEDIANTE CÓDIGO, PERO NO HACE FALTA, HAY OTRAS FORMAS, MEDIANTE CÓDIGO PODEMOS MODIFICAR EL TXT ANTES DE IMPORTAR) pero mis conocimientos son muy básicos y no entiendo este lenguaje de programación. ¿Existe otro modo de hacer que en caso de valor Null tome el valor del mismo campo en la FILA O REGISTRO anterior?
Gracias por la ayuda
======================================================================
Otra cosa:1-abre el txt con el wordpad e intenta hacer"reemplazar texto"
A ver si puedes repararlo tu mismo y nos ahorramos trabajo.
2-Mandame un fragmento de txt de 2 o 3 albaranes a mi mail
que encontraras en mi currículo.
Esto funcionará muy pronto!
En principio la opción de modificar el fichero no es viable, hablamos de 520 estaciones de servicio que introducen una media de 8 albaranes al día y la modificación manual del fichero ocuparía demasiado tiempo (además de desvirtuar la informacióne conseguido mediante VBA que la importación del fichero se realice correcta
Y?
¿Por qué has pedido ayuda?
Al tiempo que solicité ayuda aquí también lo hice en el foro VBA, he obtenido una solución que se adapta a las necesidades que tengo, me permite automatizar el procedimiento de importación de datos sin tener que modificar el txt generado en las estaciones. Si lo deseas, te puedo enviar o postear toda la cadena de parámetros que se introducen en el botón de importación.
No he pretendido ser descortés (nada más lejos de mi intención) Cree que agradezco cuanta ayuda me podáis prestar, pues mis conocimientos de Access son bastante limitados
Lo dicho, si te puede ser útil, te puedo enviar los datos que me proporcionó el foro de VBA del Búho.
Saludos
El Búho... una gran página!
Vale, gracias, postea aquí mismo o manda a mi mail que encontraras en el currículo.
No olvides finalizar la pregunta.
Buenos días, adjunto los parámetros que me han permitido obtener el fichero.
Gracias por tu ayuda.
Private Sub cmdImportar_Click()
Dim strRutaRchivo As String, _
    strLinea As String, _
    bytArchivo As Byte, _
    strSQL As String, _
    strAlbaran As String, _
    datFecha As Date
On Error GoTo cmdImportar_Click_TratamientoErrores
' abro el archivo de texto
strRutaRchivo = "C:\Albaranes\ARCHIDUQUE.txt"
bytArchivo = FreeFile
Open strRutaRchivo For Input As #bytArchivo
' lo recorro linea a linea
Do While Not EOF(bytArchivo)
   ' obtengo una linea
   Line Input #bytArchivo, strLinea
   If Not Left(strLinea, 1) = "n" And Not Len(Trim(strLinea)) = 0 Then
      ' si donde debería estar el número de albaran, hay un número lo meto
      ' en una variable, sino la dejo como estaba
      If Not Nz(Trim(Mid(strLinea, 2, 8)), "") = "" Then
         strAlbaran = Trim(Mid(strLinea, 2, 8))
      End If
      ' Si donde debería estar la fecha, hay algo lo meto
' en una variable, sino la dejo como estaba
      If Not Nz(Trim(Mid(strLinea, 13, 8)), "") = "" Then
         datFecha = Mid(strLinea, 13, 8)
      End If
      ' Construyo un sentencia SQL con las variables y resto de "segmentos" de la linea
strSQL = "INSERT INTO Albaranes ( Albarán, Fecha, Código, Denominación, IVA, Cantidad, PVP, Total )"
      strSQL = strSQL & " SELECT '" & strAlbaran & "' AS Albaran, "
      strSQL = strSQL & "#" & datFecha & "# AS Fecha, "
      strSQL = strSQL & Mid(strLinea, 22, 8) & " AS Codigo, "
      strSQL = strSQL & "'" & Mid(strLinea, 31, 22) & "' AS Denominacion, "
      strSQL = strSQL & Str(Mid(strLinea, 54, 6)) & " AS IVA, "
      strSQL = strSQL & Str(Mid(strLinea, 61, 10)) & " AS Cantidad, "
      strSQL = strSQL & Str(Mid(strLinea, 72, 12)) & " AS PVP, "
      strSQL = strSQL & Str(Mid(strLinea, 83, 11)) & " AS Total"
      ' ejecuto la sentencia SQL para insertar los datos en la tabla
      CurrentDb.Execute strSQL, dbFailOnError
   End If
Loop
cmdImportar_Click_Salir:
   ' cierro el archivo de texto
   Close #bytArchivo
   On Error GoTo 0
   Exit Sub
cmdImportar_Click_TratamientoErrores:
   MsgBox "Error " & Err & " en proc.: cmdImportar_Click de Documento VBA: Form_Formulario9 (" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
   Resume cmdImportar_Click_Salir

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas