Страница: 1 |
Страница: 1 |
Вопрос: БД из TXT
Добавлено: 28.06.04 17:40
Автор вопроса: Seregahome
Как, при считывании текстового файла (в качестве БД), перейти на новую строку?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Alexander
Вопросов: 19
Ответов: 118
Профиль | | #1
Добавлено: 28.06.04 17:50
Ну если я не ошибаюсь то
будет так только нужно пользовать listbox
Private Sub Form_Load()
 im s As String
Open "c:\autoexec.bat" For Input As #1
 o Until EOF(1)
Line Input #1, s
List1.AddItem s
Loop
Close
End Sub
Номер ответа: 2
Автор ответа:
Seregahome
Вопросов: 39
Ответов: 24
Профиль | | #2
Добавлено: 28.06.04 18:36
А если дело обстоит так:
Open App.Path & "\111.txt" For Binary Access Read Lock Write As 1
tStr = Space(LOF(1))
Get 1, , tStr
sArr = Split(tStr, ","
Do Until EOF(1)
Adodc1.Recordset.AddNew
For nf = 0 To 2
Adodc1.Recordset.Fields(nf) = sArr(nf)
MsgBox 2
Next nf
Line Input #1, tStr 'здесь на этой строчке ошибка
Loop
Close 1
т.е. записи надо еще и разбивать на столбцы.
Номер ответа: 3
Автор ответа:
Андрей Никитин
ICQ: 325172082
Вопросов: 3
Ответов: 81
Профиль | | #3
Добавлено: 29.06.04 15:46
А если попробовать так:
Open App.Path & "\111.txt" For Input As #1
'Читаем весь файл
sFile = Input(FileLen(App.Path & "\111.txt", #1)
Close #1
'Разбиваем на строки (записи)
arrStrings = Split(sFile, vbCrLf)
For i = LBound(arrStrings) To UBound(arrStrings)
'Разбиваем каждую строку на столбцы
arrFields = Split(arrStrings, ","
Adodc1.Recordset.AddNew
For nf = 0 To 2
Adodc1.Recordset.Fields(nf) = arrFields(nf)
MsgBox 2
Next
Next
PS. А зачем открывать в бинарном режиме?
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 29.06.04 16:18
> PS. А зачем открывать в бинарном режиме?
Более полная и гибкая работа с файлами...
И это более шустрый способ, чем твой, хотя бы уже вот по этой причине:
- FileLen(App.Path & "\111.txt"
- LOF(1)
Да и вообще, сомневаюсь что Input будет работать быстрее чем бинарный доступ...
Есть-ли смысл два раза использовать App.Path & "\111.txt"
ЗЫ
Кстати, если программа будет в корне диска, то твой путь станет таким:
"с:\\111.txt"
По той причине, что App.Path, в этом случае, вернет путь "c:\", т.е. со слэшем!
Номер ответа: 5
Автор ответа:
Андрей Никитин
ICQ: 325172082
Вопросов: 3
Ответов: 81
Профиль | | #5
Добавлено: 29.06.04 16:54
Упс... В предыдущем посте сделал ошибку...
Вместо:
arrFields = Split(arrStrings, ","
Надо:
arrFields = Split(arrStrings(i), ","
>to sne: ...справедливо... (хотя бы потому, что при чтении с исп. Input, VB делает со строкой некоторые махинации во внутреннем буфере) - я предложил всего лишь вариант
Номер ответа: 6
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #6
Добавлено: 29.06.04 17:01
2Андрей, я с тобой не спорил... Ты всего-лишь спросил, я всего-лишь ответил
при этом я, конечно же, никоим образом, не притендую на правоту собственной точки зрения, я высказываю свои наблюдения...
Номер ответа: 7
Автор ответа:
Андрей Никитин
ICQ: 325172082
Вопросов: 3
Ответов: 81
Профиль | | #7
Добавлено: 30.06.04 09:10
>Есть-ли смысл два раза использовать App.Path & "\111.txt"
н-да... действительно протормозил - глянул только что свои исходники - везде использую LOF(iFileNumber), а не FileLen(...) - видно перегрелся