Actualizar por ODBC

Buenas:
Mi problema es el siguiente: tengo una base de datos y necesito actualizarla por ODBC mediante Visual Basic.
Tengo que coger un campo de la bbdd y actualizarlo con el valor de un archivo de texto (se trata de coger un DNI que empieza por uno o varios ceros y sustituirlo por el mismo DNI sin los ceros que lleva delante).
En el archivo de texto tengo ordenados los DNIs sin ceros y el problema es que no se como llevar este DNI al ODBC, sustituyendo el antiguo con el nuevo ¿cómo lo podría hacer?
Saludos
-VÍCTOR-

3 respuestas

Respuesta
1
Vamos a suponer que tu base de datos es compatible con el componente "Microsoft ActiveX Data Objects Library 2.5" (conocido como ADO o ADODB). Lo tienes que importar desde Proyecto->Referencias.
Una vez importado pones el código para abrir la base de datos:
Dim prConexion As ADODB.Connection
Dim comando As New ADODB.Command
Dim cadenaConex As String
Dim i As Integer
Dim numDNIS As Integer
' Abre la Conexión
Set prConexion = New ADODB.Connection
cadenaConex = "DNS= mibd"
prConexion.Open cadenaConex
numDNIS = listaDNIS.Count
For i=0 To numDNIS
' Ejecuta el comando
comando.ActiveConnection = prConexion
comando.CommandText = "INSERT INTO tabla_dni(dni) VALUES(" & _
listaDNIS.Item(i) & ")"
comando.Execute
Next i
Todo esto te vale suponiendo que en el objeto listaDNIS, de tipo Collection, tienes toda la lista de DNIs y que tu base de datos está registrada en el ODBC con un DNS de sistema llamado "mibd".
Para quitar los ceros de un string puedes hacer un bucle Loop, quitando el primer elemento del string mientras sea el carácter "0".
Si en vez de ceros son caracteres blancos, usando LTrim podrías quitarlos de golpe.
Supongo que ya sabes abrir ficheros y leerlos, pero por si acaso:
Dim numFich As Integer
numFich=FreeFile
Open "c:\...ruta\fichero.txt" For Input As #numFich
...Input #numFich, ...
Close #numFich
Respuesta
1
Víctor, tu pregunta está formulada un poco rara. Hablas de AdoDc en el titulo y después de ODBC el el texto, cuando son cosas totalmente distintas.
Y no mencionas que tipo de base usas
Si tienes una base de datos enlazada a un Ado data control inclusive no necesitas el archivo de textos para sacar los ceros de adelante
puedes recorrerla y sacarle los ceeros directamente
por ejemplo
Dim NuevoDni$
adodc1.Recordset.MoveFirst
while not adodc1.Recordset.eof
nuevoDni$ = sacoceros(adodc1.Recordset.fields("NroDNI"))
adodc1.Recordset.fields("NroDNI") = NuevoDni$
adodc1.Recordset.update
adodc1.Recordset.Movenext
Wend
y Listo.
Tienes que definir en el general del formulario la funcion sacoceros
Private Function Sacoceros(Dni as String) as String
Dim x$
Dim I as integer
x$ = trim(Dni)
for i = 1 to len(X$)
if mid$(x$,i,1) > "0" Then
Sacoceros = mid$(x$,i)
exit function
Else
Sacoceros = ""
end if
next
end function
Quizás tengas que optimizar un poco el código, yqa que lo escribí directamente sin probarlo
si no es esto lo que necesitabas, trata de reformolar la pregunta de forma más especifica
Respuesta
Por lo que entiendo de u pregunta el tema es que hay que verificar que lo que esta en el archivo de texto es lo mismo que en la base de datos, y en caso de diferencia cambiar o bien agregar el DNI, esto creo que seria más simple si leyeras el archivo de texto y lo pasaras a una bbdd temporal, en caso de que decidas hacerlo así, tienes que ver es todo lo relacionado con "Open" de archivos planos o bynarios, "Put" y demás que en MSDN viene bastante bien explicado. Suerte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas