Работа с файлами в VB
Формулировка задачи:
Существует 2 файла типа Sequential (.txt). код на их создание написали, помогите как отсортировать записи в этих файлах по ключевому полю. Записи первой таблицы: код, название книги, автор, тираж, цена, стандартная упаковка. Записи второй таблицы: код, дополнительный тираж, новая цена. ключевое поле код.
На всякий случай уже готовый программный код на создание и просмотр файлов.
Option Explicit
Dim kod As Byte
Dim nazv As String * 30
Dim avt As String * 30
Dim tir As Single
Dim cena As Single
Dim stup As Variant
Dim kod1 As Byte
Dim doptir As Single
Dim novcena As Single
'Создание файла 1
Private Sub mnu211_Click()
Dim i As Byte
Open "fl.txt" For Output As #1
i = 0
Do
i = i + 1
kod = InputBox("Введите код книги №" & i, "Ввод данных", 2000, 500)
nazv = (InputBox("Введите название книги №" & i, "Ввод данных", 2000, 500))
avt = InputBox("Введите автора книги №" & i, "Ввод данных", , 2000, 500)
tir = InputBox("Введите тираж книги №" & i, "Ввод данных", 2000, 500)
cena = InputBox("Введите цену книги №" & i, "Ввод данных", 2000, 500)
stup = InputBox("Введите количество книг в стандартной упаковке для книги №" & i, "Ввод данных", 2000, 500)
Write #1, kod, nazv, avt, tir, cena, stup
Loop Until MsgBox("Продолжить ввод данных ?", 36, "Выход") = vbNo
Close #1
End Sub
'Создание файла 2
Private Sub mnu212_Click()
Dim i As Byte
Open "fl1.txt" For Output As #2
i = 0
Do
i = i + 1
kod1 = InputBox("Введите код книги №" & i, "Ввод данных", 2000, 500)
doptir = InputBox("Введите дополнительный тираж книги №" & i, "Ввод данных", 2000, 500)
novcena = InputBox("Введите новую цену книги №" & i, "Ввод данных", 2000, 500)
Write #2, kod1, doptir, novcena
Loop Until MsgBox("Продолжить ввод данных ?", 36, "Выход") = vbNo
Close #2
End Sub
'Распечатка файла 1
Private Sub mnu271_Click()
Open "fl.txt" For Input As #1
Text1.Text = Space(26) & "Книги" & vbCrLf
Text1.Text = Text1.Text + _
"Код Название Автор Тираж Цена Ст. уп" & vbCrLf
Do While Not EOF(1)
Input #1, kod, nazv, avt, tir, cena, stup
Text1.Text = Text1.Text & kod & " " & nazv
Text1.Text = Text1.Text & "" & avt & " " & tir
Text1.Text = Text1.Text & " " & cena & " " & stup & vbCrLf
Loop
Close #1
End Sub
'распечатка файла 2
Private Sub mnu272_Click()
Open "fl1.txt" For Input As #2
Text2.Text = Space(26) & "Дополнительный тираж" & vbCrLf
Text2.Text = Text2.Text + _
"Код Доп. тираж Новая цена " & vbCrLf
Do While Not EOF(2)
Input #2, kod1, doptir, novcena
Text2.Text = Text2.Text & kod1 & " " & doptir & " " & novcena & vbCrLf
Loop
Close #2
End Sub
'справка
Private Sub mnu28_Click()
Form2.Show
Dim i As Byte, j As Byte
Open "fl.txt" For Input As #1
Open "fl1.txt" For Input As #2
Form2.Text1.Text = ""
Form2.Text1.Text = Space(26) & "Выходной документ" & vbCrLf
Form2.Text1.Text = Form2.Text1.Text + _
"Автор Суммарный тираж Средняя цена" & vbCrLf
Do While Not EOF(1)
Input #1, kod, nazv, avt, tir, cena, stup
Input #2, kod1, doptir, novcena
Form2.Text1.Text = Form2.Text1.Text & avt & "" & tir + doptir
Form2.Text1.Text = Form2.Text1.Text & " " & (cena + novcena) / 2 & vbCrLf
Loop
Close #2
Close #1
End Sub
'Окончание работы программы
Private Sub mnu12_Click()
If MsgBox("Вы действительно хотите выйти из программы ?", vbYesNo + _
vbQuestion, "Выход") = vbYes Then End
End Sub
Please, help us. В понедельник защита!!!
Решение задачи: «Работа с файлами в VB»
textual
Листинг программы
Option Explicit Private Sub Комманда1_Click() Dim i, J Dim M() As String Dim T Dim W() As String Dim P() As String Dim File As String, CF As String File = "C:\fl1.txt" Open File For Binary As #1 CF = Input(FileLen(File), 1) Close #1 CF = Replace(CF, """", "") M = Split(CF, vbNewLine) For i = 0 To UBound(M) - 2 For J = i + 1 To UBound(M) If M(J) <> "" Then W = Split(M(i), ",") P = Split(M(J), ",") If CDbl(W(0)) < CDbl(P(0)) Then T = M(J): M(J) = M(i): M(i) = T End If Next J Debug.Print M(i) Text1.Text = Text1.Text & M(i) & vbCrLf Next i End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д