Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

cambiar puntos por comas en txt e importarlo a mdb

Estas en el tema de cambiar puntos por comas en txt e importarlo a mdb en el foro de Visual Basic clásico en Foros del Web. hola amigos, espero que podais ayudarme, conozco otros lenguajes pero soy nuevo con visual y tengo que hacer lo siguiente: tengo un archivo de texto ...
  #1 (permalink)  
Antiguo 14/05/2007, 05:37
 
Fecha de Ingreso: mayo-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
cambiar puntos por comas en txt e importarlo a mdb

hola amigos, espero que podais ayudarme, conozco otros lenguajes pero soy nuevo con visual y tengo que hacer lo siguiente:

tengo un archivo de texto con campos separados con punto y coma (;) del tipo:

campo1;campo2;campo3
4.5203;4.35422442;400
4.5898;4.35606193;500
4.3309;4.35572090;500


necesito cambiar los puntos de los decimales por comas y posteriormente importar el archivo a una tabla en una base de datos access.

de preferencia tendria que hacerlo en VBA aunque tambien puedo llamar a un ejecutable de visual basic .net asi que si alguno me puede ayudar se lo agradecere

infinitamente.

habia hecho este codigo en .net pero me cambia los puntos por comas durante la ejecucion dle programa pero no las escribe en el archivo y por lo tanto no me

lo importa bien a la tabla. Os agradezco vuestra ayuda.



Imports ADOX
Imports System
Imports System.Data
Imports System.Data.OleDb

Module puntos_por_comas


Sub Main()
Using MyReader As New _
Microsoft.VisualBasic.FileIO.TextFieldParser _
("..\texto.txt")

MyReader.TextFieldType = FileIO.FieldType.Delimited
MyReader.SetDelimiters(";")

Dim currentRow As String()
While Not MyReader.EndOfData
Try
currentRow = MyReader.ReadFields()
Dim currentField As String
For Each currentField In currentRow
Dim cadena As String = Replace(currentField, ".", ",")
Next
Catch ex As _
Microsoft.VisualBasic.FileIO.MalformedLineExceptio n
MsgBox("Line " & ex.Message & _
"is not valid and will be skipped.")
End Try
End While
End Using


Dim cnn As New ADODB.Connection

cnn.Open( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=..\base.mdb;" & _
"Jet OLEDB:Engine Type=4;")


cnn.Execute("SELECT * INTO [Tabla] FROM [Text;DATABASE=..\;HDR=YES;FMT=Delimited(;)].[texto.txt]")


cnn.Close()

End Sub



End Module
  #2 (permalink)  
Antiguo 15/05/2007, 16:23
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Re: cambiar puntos por comas en txt e importarlo a mdb

zz=0
while zz <> 0
zz = InStr(1, tucadena, ".")
if zz > o then Mid(tucadena, zz, 1) = ","
wend

te explico el codigo
la funcion instr busca un caracter dentro de una cadena, en este caso una coma dentro de tucadena

si encuentra el caracter, zz asume el valor de la posicion donde encontro la cadena, si no la encuentra zz vale cero

mid rremplaza el caracter de la posicion zz por el punto.

este ciclo lo hace mientras zz no sea cero, cuando vale cero es porke ya no lo encontro mas en la cadena

espero sirva
  #3 (permalink)  
Antiguo 15/05/2007, 16:24
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Re: cambiar puntos por comas en txt e importarlo a mdb

OJO inicialize zz en cero, inicializala en cualquier valor, menos en cero
zz=10000000
  #4 (permalink)  
Antiguo 16/05/2007, 01:22
 
Fecha de Ingreso: mayo-2007
Mensajes: 7
Antigüedad: 17 años
Puntos: 0
Re: cambiar puntos por comas en txt e importarlo a mdb

muchas gracias, lo solucione de esta forma:



Imports ADOX
Imports System
Imports System.Data
Imports System.Data.OleDb

Module puntos_por_comas


Sub Main()
' Leemos el contenido del archivo de texto.
Dim sr As New System.IO.StreamReader("C:\visual studio\campos\texto.txt")
Dim origen As String = sr.ReadToEnd
sr.Close()

' Reemplazamos el punto por la coma.
Dim destino As String = origen.Replace(".", ",")

' Guardamos el resultado en un nuevo archivo de texto.
Dim sw As New System.IO.StreamWriter("C:\visual studio\campos\Destino.txt")
sw.Write(destino)
sw.Close()


Dim cnn As New ADODB.Connection

cnn.Open( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\visual studio\campos\base.mdb;" & _
"Jet OLEDB:Engine Type=4;")

cnn.Execute("SELECT * INTO [Modo1] FROM [Text;DATABASE=C:\visual studio\campos\;HDR=YES;FMT=Delimited(;)].[destino.txt]")

cnn.Close()

End Sub



End Module
Editar/Borrar Mensaje
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:48.