Hola soy Corlo
Estoy intentando modificar los datos de la factura en el list1 en la opcion modificar datos, cuando guardo los datos de la factura lo ha bien, cuando leo la factura lo hace bien, cuando selecciono un elemento del list1 pasa a los text4, text5, text6, lo hace bien, pero cuando cambio los datos de los text4, text5, text6, no me guarda en archivo random los datos cambiados en Guardar_Factura porque tiene que estar guardados en el list1, no se que hago mal.
Si alquien me puede ayudar, gracias.
'DEFININMOS LOS ELEMENTOS DE LA FACTURA
Private Type Type_Articulos_Factura
codigo_articulo As String
nombre_articulo As String
precio_articulo As String
End Type
Private Type Type_Datos_Factura
Codigo_Factura As String
Nombre_Cliente_Factura As String
Fecha_Factura As String
Articulos_Factura() As Type_Articulos_Factura
End Type
Dim factura As Type_Datos_Factura
Private Type Type_Indices
Codigo_Facturas As Integer
Codigo_Albaranes As Integer
End Type
Dim detalle As Integer
Const Prefix_Facturas = "Fact" 'Asignamos un prefijo a las facturas para cuandos se guarden
Private Indices As Type_Indices
Private Sub Agregar_Articulo(nombre_articulo, codigo_articulo, precio_articulo)
List1.AddItem nombre_articulo & Space(14) & codigo_articulo & Space(27) & precio_articulo
factura.Articulos_Factura(UBound(factura.Articulos_Factura)).codigo_articulo = codigo_articulo
factura.Articulos_Factura(UBound(factura.Articulos_Factura)).nombre_articulo = nombre_articulo
factura.Articulos_Factura(UBound(factura.Articulos_Factura)).precio_articulo = precio_articulo
ReDim Preserve factura.Articulos_Factura(0 To UBound(factura.Articulos_Factura) + 1)
End Sub
Private Sub Crear_Factura(Codigo_Factura, Nombre_Cliente, Fecha_Factura)
factura.Codigo_Factura = Codigo_Factura
factura.Nombre_Cliente_Factura = Nombre_Cliente
factura.Fecha_Factura = Fecha_Factura
ReDim Preserve factura.Articulos_Factura(0 To 0)
End Sub
Private Sub Command1_Click()
'Nueva Factura
Text4.SetFocus
List1.Clear
Indices.Codigo_Facturas = Indices.Codigo_Facturas + 1
Label1.Caption = Indices.Codigo_Facturas
'GUARDAMOS EL CODIGO DE LA NUEVA FACTURA
Open App.Path & "\Indices.txt" For Binary As #1
Put #1, , Indices
Close #1
Label4.Caption = "Factura:"
Text1.Text = "Pedro"
Text2.Text = Date
Crear_Factura Indices.Codigo_Facturas, Text1.Text, Text2.Text
'Iniciamos la nueva Factura
Command5.Enabled = True
Command6.Enabled = True
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub GUARDAR_FACTURA()
factura.Nombre_Cliente_Factura = Text1.Text
factura.Fecha_Factura = Text2.Text
Open App.Path & "\" & Prefix_Facturas & Indices.Codigo_Facturas & ".TXT" For Binary As #1
Put #1, , factura
Close #1
End Sub
Private Sub Command3_Click()
' modificar datos
If List1.ListIndex < 0 Then
MsgBox "Ningún elemento ha sido seleccionado", vbInformation
Exit Sub
End If
List1.AddItem Text4.Text & Space(14) & Text5.Text & Space(27) & Text6.Text
List1.RemoveItem List1.ListIndex
GUARDAR_FACTURA
Call Command7_Click
End Sub
Private Sub Command5_Click()
GUARDAR_FACTURA
End Sub
Private Sub Command6_Click()
' Agregar articulo al list1
Agregar_Articulo Text4.Text, Text5.Text, Text6.Text
End Sub
Private Sub Command7_Click()
'leer los datos de la factura
Dim gh As String, lp As String
Text1.Text = ""
Text2.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
List1.Clear
On Error GoTo err:
If Len(Dir(gh)) <> 0 Then
gh = App.Path & "\" & Prefix_Facturas & Text3.Text & ".TXT"
Open gh For Binary Access Read Lock Read As #1
Get #1, , factura
Close #1
Label1.Caption = factura.Codigo_Factura
Text1.Text = factura.Nombre_Cliente_Factura
Text2.Text = factura.Fecha_Factura
For total_articulos = 0 To UBound(factura.Articulos_Factura) - 1
nombre_articulo = factura.Articulos_Factura(total_articulos).nombre_articulo
codigo_articulo = factura.Articulos_Factura(total_articulos).codigo_articulo
precio_articulo = factura.Articulos_Factura(total_articulos).precio_articulo
List1.AddItem nombre_articulo & Space(12) & codigo_articulo & Space(31) & precio_articulo
Next
End If
Exit Sub
err:
MsgBox "Factura no Existe", vbCritical, "ERROR"
Kill gh
End Sub
Private Sub Form_Load()
' leer el numero de la ultima factura
Open App.Path & "\Indices.txt" For Binary As #1
Get #1, , Indices
Close #1
Label1.Caption = Indices.Codigo_Facturas
Command1.Enabled = True
Command5.Enabled = True
End Sub
Private Sub List1_Click()
' leer los datos del list1 a text4.text, text5.text, text6.text
Dim gh As String
Dim total_articulos As Integer
If List1.ListIndex < 0 Then
MsgBox "Ningún elemento ha sido seleccionado", vbInformation
Exit Sub
End If
gh = App.Path & "\" & Prefix_Facturas & Text3.Text & ".TXT"
Open gh For Binary Access Read Lock Read As #1
Get #1, , factura
For total_articulos = 0 To List1.ListIndex
Text4.Text = factura.Articulos_Factura(total_articulos).nombre_articulo
Text5.Text = factura.Articulos_Factura(total_articulos).codigo_articulo
Text6.Text = factura.Articulos_Factura(total_articulos).precio_articulo
Next
Close #1
End Sub
Puede que sea porque estás usando el mismo número de archivo #1
Prueba a usar Freefile:
Dim intFile as Integer
intFile = Freefile
...
Open App.Path & "\Indices.txt" For Binary As intFile
Hola soy Corlo.
Gracias por contestar Lekim.
He echo los cambios que me has dicho y me hace lo mismo, no me guarda los datos una vez modificados GUARDAR_FACTURA, de la opcion MODIFICAR DATOS.
'DEFININMOS LOS ELEMENTOS DE LA FACTURA
Private Type Type_Articulos_Factura
codigo_articulo As String
nombre_articulo As String
precio_articulo As String
End Type
Private Type Type_Datos_Factura
Codigo_Factura As String
Nombre_Cliente_Factura As String
Fecha_Factura As String
Articulos_Factura() As Type_Articulos_Factura
End Type
Dim factura As Type_Datos_Factura
Private Type Type_Indices
Codigo_Facturas As Integer
Codigo_Albaranes As Integer
End Type
Dim detalle As Integer
Const Prefix_Facturas = "Fact" 'Asignamos un prefijo a las facturas para cuandos se guarden
Private Indices As Type_Indices
Private Sub Agregar_Articulo(nombre_articulo, codigo_articulo, precio_articulo)
List1.AddItem nombre_articulo & Space(14) & codigo_articulo & Space(27) & precio_articulo
factura.Articulos_Factura(UBound(factura.Articulos_Factura)).codigo_articulo = codigo_articulo
factura.Articulos_Factura(UBound(factura.Articulos_Factura)).nombre_articulo = nombre_articulo
factura.Articulos_Factura(UBound(factura.Articulos_Factura)).precio_articulo = precio_articulo
ReDim Preserve factura.Articulos_Factura(0 To UBound(factura.Articulos_Factura) + 1)
End Sub
Private Sub Crear_Factura(Codigo_Factura, Nombre_Cliente, Fecha_Factura)
factura.Codigo_Factura = Codigo_Factura
factura.Nombre_Cliente_Factura = Nombre_Cliente
factura.Fecha_Factura = Fecha_Factura
ReDim Preserve factura.Articulos_Factura(0 To 0)
End Sub
Private Sub Command1_Click()
'Nueva Factura
Text4.SetFocus
List1.Clear
Dim intFile As Integer
intFile = FreeFile
Indices.Codigo_Facturas = Indices.Codigo_Facturas + 1
Label1.Caption = Indices.Codigo_Facturas
'GUARDAMOS EL CODIGO DE LA NUEVA FACTURA
Open App.Path & "\Indices.txt" For Binary As intFile
Put #intFile, , Indices
Close #intFile
Label4.Caption = "Factura:"
Text1.Text = "Pedro"
Text2.Text = Date
Crear_Factura Indices.Codigo_Facturas, Text1.Text, Text2.Text
'Iniciamos la nueva Factura
Command5.Enabled = True
Command6.Enabled = True
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub GUARDAR_FACTURA()
Dim File As Integer
File = FreeFile
factura.Nombre_Cliente_Factura = Text1.Text
factura.Fecha_Factura = Text2.Text
Open App.Path & "\" & Prefix_Facturas & Indices.Codigo_Facturas & ".TXT" For Binary As #File
Put #File, , factura
Close #File
End Sub
Private Sub Command3_Click()
' modificar datos
If List1.ListIndex < 0 Then
MsgBox "Ningún elemento ha sido seleccionado", vbInformation
Exit Sub
End If
List1.AddItem Text4.Text & Space(14) & Text5.Text & Space(27) & Text6.Text
List1.RemoveItem List1.ListIndex
GUARDAR_FACTURA
Call Command7_Click
End Sub
Private Sub Command5_Click()
GUARDAR_FACTURA
End Sub
Private Sub Command6_Click()
' Agregar articulo al list1
Agregar_Articulo Text4.Text, Text5.Text, Text6.Text
End Sub
Private Sub Command7_Click()
'leer los datos de la factura
Dim gh As String, lp As String
Dim File As Integer
File = FreeFile
Text1.Text = ""
Text2.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
List1.Clear
On Error GoTo err:
If Len(Dir(gh)) <> 0 Then
gh = App.Path & "\" & Prefix_Facturas & Text3.Text & ".TXT"
Open gh For Binary Access Read Lock Read As #File
Get #File, , factura
Close #File
Label1.Caption = factura.Codigo_Factura
Text1.Text = factura.Nombre_Cliente_Factura
Text2.Text = factura.Fecha_Factura
For total_articulos = 0 To UBound(factura.Articulos_Factura) - 1
nombre_articulo = factura.Articulos_Factura(total_articulos).nombre_articulo
codigo_articulo = factura.Articulos_Factura(total_articulos).codigo_articulo
precio_articulo = factura.Articulos_Factura(total_articulos).precio_articulo
List1.AddItem nombre_articulo & Space(12) & codigo_articulo & Space(31) & precio_articulo
Next
End If
Exit Sub
err:
MsgBox "Factura no Existe", vbCritical, "ERROR"
Kill gh
End Sub
Private Sub Form_Load()
' leer el numero de la ultima factura
Dim intFile As Integer
intFile = FreeFile
Open App.Path & "\Indices.txt" For Binary As intFile
Get #intFile, , Indices
Close #intFile
Label1.Caption = Indices.Codigo_Facturas
Command1.Enabled = True
Command5.Enabled = True
End Sub
Private Sub List1_Click()
' leer los datos del list1 a text4.text, text5.text, text6.text
Dim gh As String
Dim total_articulos As Integer
If List1.ListIndex < 0 Then
MsgBox "Ningún elemento ha sido seleccionado", vbInformation
Exit Sub
End If
gh = App.Path & "\" & Prefix_Facturas & Text3.Text & ".TXT"
Open gh For Binary Access Read Lock Read As #1
Get #1, , factura
For total_articulos = 0 To List1.ListIndex
Text4.Text = factura.Articulos_Factura(total_articulos).nombre_articulo
Text5.Text = factura.Articulos_Factura(total_articulos).codigo_articulo
Text6.Text = factura.Articulos_Factura(total_articulos).precio_articulo
Next
Close #1
End Sub