Как записать текстовый файл в Recordset?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
aol
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 21.02.2006 (Вт) 16:20
Откуда: Msk

Как записать текстовый файл в Recordset?

Сообщение aol » 21.02.2006 (Вт) 17:12

Уважаемые Гуру Васика!

Заблудился в 3-х соснах:

Есть текстовый файл test.txt
1;2;3
3;2;1

Есть следующий код:
Private Sub Command1_Click()
Dim rst As Recordset
Dim dbs As Database
Set dbs=OpenDatabase(App.Path, False,False, "Text;")
Set rst=dbs.OpenRecordset("test.txt")
End Sub

Есть schema.ini
[test.txt]
ColNameHeader=True
Format=Delimited(;)
MaxScanRows=25
CharacterSet=OEM

Получается ошибка: Run-time error '13' Type mismatch

Что не так?

Не пинайте больно!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.02.2006 (Вт) 17:19

Скорее всего подключены и DAO, и ADO.
Подключи в референсах только одну библиотеку или в декларациях описывай полное название класса (с именем библиотеки).
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 21.02.2006 (Вт) 17:22

Код: Выделить всё
Dim cn as ADODB.Connection
Dim rs as ADODB.Recordset

Set cn=New ADODB.Connection
cn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
                   "Dbq=" & App.Path & ";" & _
                   "Extensions=asc,csv,tab,txt;" & _
                   "Persist Security Info=False"

Set rs=New ADODB.Recordset
Set rs.ActiveConnection=cn

rs.Open "SELECT * FROM [test.txt]"

Random
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 21.02.2006 (Вт) 6:08
Откуда: Пермь

Сообщение Random » 21.02.2006 (Вт) 17:45

Попробуй Visual Data Meneger. Главное подключться ;) к БД.
А там - делай что хочешь :)
:)

aol
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 21.02.2006 (Вт) 16:20
Откуда: Msk

Сообщение aol » 21.02.2006 (Вт) 23:13

Спасибо, что не бросили в трудную минуту!

Действительно оказалось, что у меня подключены DAO и ADO.


Вопросы к Konst_One:

1. При таком подключении необходимо ли наличие schema.ini?
2. Связываю Adodc1 и DataGrid1, дописываю в Ваш код, чтобы посмотреть содержимое rs следующее:

Set Adodc1.Recordset = rs
Adodc1.Refresh
DataGrid1.Refresh

В итоге в DataGrid1 пустота.
Опять что-то делаю не так?

Извините за назойливость. С уважением...

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 22.02.2006 (Ср) 10:41

aol писал(а):Спасибо, что не бросили в трудную минуту!

Действительно оказалось, что у меня подключены DAO и ADO.


Вопросы к Konst_One:

1. При таком подключении необходимо ли наличие schema.ini?
2. Связываю Adodc1 и DataGrid1, дописываю в Ваш код, чтобы посмотреть содержимое rs следующее:

Set Adodc1.Recordset = rs
Adodc1.Refresh
DataGrid1.Refresh

В итоге в DataGrid1 пустота.
Опять что-то делаю не так?

Извините за назойливость. С уважением...


>>1. При таком подключении необходимо ли наличие schema.ini?

А разве для доступа к текстовому файлу нужно схемы прописывать? :)

>>2. ....

Ты не грид с рекордсетом связал, а два рекордсета между собой.

ЗЫ Могу ошибиться VB под рукой нет, но вроде так надо :
Код: Выделить всё
Set DataGrid1.DataSource = rs
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.

aol
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 21.02.2006 (Вт) 16:20
Откуда: Msk

Сообщение aol » 22.02.2006 (Ср) 11:36

Уважаемому COBRA!

Схему всетаки прописывать необходимо, а то как без неё форматировать текстовый файл?

Я ADODC1 и DataGrid1 предварительно связал в форме. Потом в коде пытаюсь в ADODC1 записать содержимое rs, чтобы оно отобразилось в DataGrid1. Но к сожалению в DataGrid1 ничего не появляется.

Set DataGrid1.DataSource = rs дает ошибку '7004'

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.02.2006 (Ср) 11:44

Уважаемому COBRA!

Вообще-то CORBA... :lol:
А я все практикую лечение травами...

aol
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 21.02.2006 (Вт) 16:20
Откуда: Msk

Сообщение aol » 22.02.2006 (Ср) 12:06

Уважаемый CORBA!

Прошу прощения!

Это все пальцы толстые... :oops:

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.02.2006 (Ср) 12:06

schema.ini - обязателен
ADODC - лучше не использовать, а работать напрямую с рекордсетом, как я уже написал.
Грид надо подключать = Microsoft DataGrid Control 6.0 (SP6) (OLEDB)

aol
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 21.02.2006 (Вт) 16:20
Откуда: Msk

Сообщение aol » 22.02.2006 (Ср) 23:27

Благодарю всех за участие!

Мне удалось с помощью кода, любезно предоставленного Konst_One, решить мою задачу.

Удачи, господа!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 61

    TopList