Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/12: Рейтинг темы: голосов - 12, средняя оценка - 4.58
Maksim

RecordSet из текстового файла...

14.07.2009, 08:06. Показов 2624. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, самый оптимальный способ загрузки данных из плоского текстового файла с разделителями
Code
1
2
3
Field1|Field2|...|FieldN
Field1|Field2|...|FieldN
Field1|Field2|...|FieldN
в рекордсет...
Наверняка уже у кого-то есть такие решения или идеи...
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.07.2009, 08:06
Ответы с готовыми решениями:

Редактирование поля: Recordset.edit recordset.Fields('поле') = Text1.text Recordset.update
Есть Recordset базы mdb, некоторые поля в базе пустые. Т.е. Recordset.Fields ('поле') возвращает Null. Когда пытаюсь отредактировать запись...

Разница между recordset.cancel и recordset.cancelupdate
Здравствуйте! Если есть какая-либо инфорация по поводу вышеназванных методов объекта Recordset в ADO - поделитесь Заранее благодарен

Проблемы с кодом Recordset.AddNew() Recordset(0) = '01/02/2002' Recordset.Update()
Recordset.AddNew() Recordset(0) = '01/02/2002' Recordset.Update() //----------дает результат 1 февраля 2002 Recordset.AddNew() ...

10
Maksim
14.07.2009, 08:48
Или может есть возможность используя какой-то ADO драйвер создать подключение к текстовому файлу, и выполнять SQL запросы?
Этот вариант был бы еще удобнее...
pl
51 / 17 / 6
Регистрация: 18.05.2007
Сообщений: 1,322
14.07.2009, 09:25
Поищи в архиве форума по ASP, там пробегала тема строк для соединения с различными базами.
Что-то вроде этого:
'Driver={Microsoft Text Driver (*.txt; *.csv)}bq=somepath;Extensions=asc,csv, tab,txt;Persist Security Info=False'
0
Maksim
14.07.2009, 11:59
Нашел вот такое решение
Code
1
2
3
oConn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
       'Data Source=C:source;' & _
       'Extended Properties=''text;HDR=No;FMT=Delimited'''
Только нигде не могу найти, как задать делимитер для полей данных...
И документацию найти нигде не могу...
Знает кто-нибудь как это сделать?
pl
51 / 17 / 6
Регистрация: 18.05.2007
Сообщений: 1,322
14.07.2009, 12:04
Насколько мне известно поддерживаются только два основных формата: разделение символом ; (CSVDelimeted) и символом табуляции (TabDelimeted).
0
Maksim
14.07.2009, 12:16
Неужели нельзя задать формат делимитеров для файла?
Мне кажется, не может этого быть...
Comanche
14.07.2009, 13:16
Я не смог найти информации, как разделитель задать прямо в строке подключения, но если создать DSN-файл вида
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[ODBC]
DRIVER=Microsoft Text Driver (*.txt; *.csv)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=25
MaxBufferSize=2048
FIL=text
Extensions=txt,csv,tab,asc
DriverId=27
DefaultDir=D:
DBQ=D:
и В ТОМ ЖЕ каталоге - файл SCHEMA.INI вида:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Sample1.csv]
ColNameHeader=False
Format=Delimited(;)
MaxScanRows=25
CharacterSet=OEM
 
[Sample2.csv]
ColNameHeader=True
Format=Delimited(#)
MaxScanRows=25
CharacterSet=ANSI
Col1=aaa Char Width 10
Col2=bbb Char Width 10
Col3=ccc Char Width 10
то всё прекрасно работает: разделителем в файле Sample2.csv считается 'решётка'. Естественно, файлы Sample1.csv и Sample2.csv должны лежать в каталоге 'D: ' (в данном примере).

Это всего лишь пример. Можно обойтись и без DSN-файла, работая со строкой подключения; просто надо определить, ГДЕ должен лежать файл SCHEMA.INI. Я думаю, что в том же каталоге 'D: '.
Maksim
14.07.2009, 13:45
Да, работает и без DSN файла...

Проблема в другом:
Имена файлов у меня задаются динамически, и я не могу для каждого файла вписывать блок
Code
1
2
3
[f_06_05_2003.txt]
...
...
попытки вписать [*.txt], или [default], или вообще ничего не вписывать, неудачны...
Comanche
14.07.2009, 17:09
А почему 'не можешь вписывать'? Я понимаю, что не совсем удобно, но технически это просто. Создал файл 'Sample55.csv', вызвал API-функцию WritePrivateProfileString, записал с её помощью в секцию '[Sample55.csv]' файла Schema.ini нужную строчку с делимитером, и после этого подключился через Text Driver. Вот пример вызова API:

Code
1
2
3
4
5
6
7
8
9
10
11
Public Declare Function WritePrivateProfileString Lib 'kernel32' _
    Alias 'WritePrivateProfileStringA' _
    (ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, _
    ByVal lpString As Any, _
    ByVal lpFileName As String) As Long
'
Sub Main
    Call WritePrivateProfileString('Sample55.csv', 'Format', _
         'Delimited(#)', 'D:schema.ini')
End Sub
О работе с текстовым файлом Schema.ini ты тут вообще не должен заботиться - WritePrivateProfileString сама всё корректно запишет, поскольку предназначена для работы именно с файлами INI-формата.
И не нужны никакие Open 'D:schema.ini' For Output As #1 и т.п...
Maksim
15.07.2009, 19:36
Просто несколько абсурдно при наличии тысяч файлов вписывать в INI
для каждого абсолютно одинаковый блок...
Comanche
15.07.2009, 20:02
Попробуй тогда записать (через API или VB-шную процедуру Interaction.SaveSetting) в ключ реестра HKEY_LOCAL_MACHINESoftwareMicrosoftJet4. 0EnginesTextFormat нужное тебе значение вместо 'Delimited(' - например, запиши туда 'Delimited(#)'. Поработай, а потом восстанови обратно. Сам я не пробовал, но по идее должно сработать.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.07.2009, 20:02
Помогаю со студенческими работами здесь

Замена слов одного текстового файла словами из другого текстового файла
Даны два текстовых файла f1 и f2. Файл f1 содержит произвольный текст. Слова в тексте разделены пробелами и знаками препинания. Файл f2...

Добавить в конец первого текстового файла содержимое второго текстового файла
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.

Передать в recordset результат SQL на основе другого recordset
Начнём с того, что пытаюсь я эту штуку сделать в Excel на ADODB. Поэтому раздел форума должен быть правильный. Задача - собрать данные...

Чтение из одного текстового файла и копирование на другой текстового файл с заменой пробелов на "_"
Здравствуйте, помогите пожалуйста с паскалем. Надо прочитать текстовый файл (в нем строки с именами типа: Имя Фамилия; в каждой строке одно...

Чтение из одного текстового файла и копирование на другой текстового файл с заменой пробелов на "_"
Здравствуйте, помогите пожалуйста с паскалем. Надо прочитать текстовый файл (в нем строки с именами типа: Имя Фамилия; в каждой строке одно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru