SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Erasmo en Lunes 21 de Abril de 2003, 19:11
-
Hola a todos :jumpie:
Quisiera que me ayudaran, paso una tabla de una base de datos a un archivo de texto, con el siguiente codigo:
Option Explicit
Private Sub cmdExportar_Click()
Dim fnum As Integer
Dim archivo As String
Dim rs As Recordset
Dim campos As Integer
Dim campo_ancho() As Integer
Dim campo_valor As String
Dim i As Integer
Dim contador As Integer
On Error GoTo miscerror
If deRenta.cnRenta.State = adStateClosed Then
deRenta.cnRenta.Open
End If
fnum = FreeFile
archivo = Me.txtArchivo.Text
Open archivo For Output As fnum
Set rs = New ADODB.Recordset
rs.Open "Select Nombre, Nit, Valor, Renta from Movimientos", deRenta.cnRenta, adOpenDynamic, adLockReadOnly
campos = rs.Fields.Count
Do While Not rs.EOF
contador = contador + 1
For i = 0 To campos - 1
campo_valor = rs.Fields(i).Value
Print #fnum, campo_valor;
Next i
Print #fnum, ""
rs.MoveNext
Loop
Close fnum
MsgBox Format$(contador) & " Registros Procesados"
Exit Sub
miscerror:
MsgBox "Error " & Err.Number & vbCrLf & Err.Description
End Sub
Private Sub cmdSalir_Click()
Unload Me
End Sub
Private Sub Form_Load()
Me.txtBase.Text = App.Path & "Renta.mdb"
Me.txtArchivo.Text = App.Path & "Renta.txt"
End Sub
y obtengo el archivo de texto pero los campos unidos, yo quisiera por decirles algo que el nombre tuviera un ancho de 50 caracteres, luego un numero de identificacion de 10 caracteres y asi sucesivamente, es de decir que atraves de codigo yo le diga en que posicion van a caer los campos, pero no se como se hace, mucho les agradecere me ayuden, Gracias a todos:gracias:
Erasmo:adios:
-
Hola:
empezare por decirte que hice una prueba y si se puede.
tienes "Dim campo_ancho() As Integer" que veo que no la usas, trabajemos con esa variable. tendrias que agregar un
Dim Dato as String
Dim Linea as String
y agregas lo sgte.:
campos = rs.Fields.Count
Do While Not rs.EOF
contador = contador + 1
For i = 0 To campos - 1
' *****Agregarias esto ****
if i=0 then campo_ancho=25
if i=1 then campo_ancho=2
if i=2 then campo_ancho=10
if i=3 then campo_ancho=8
Dato = rs(i).Value+ Space(campo_ancho - Len(rs(i))
Linea = Linea + Chr(9) + Dato
'******************
Next i
Print #fnum, Linea '==== esto tambien ==
rs.MoveNext
Loop
Para considerar:
campo_ancho es la longitud maxima de tu campo, estoy considerando 4 porque en tu Select solo muestras 4, definitivamente si son mas tendrias que agregar mas.
Prueba y luego cuentas como te fue.
Saludos;
-
Gracias:suerte:
te agradezco mucho majuhemo
me funcionaron las instrucciones que me diste.
nuevamente, gracias
Erasmo.:gracias: