Доступ к Access mdb из програмы для копирования данных

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Mckoy
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 20.06.2002 (Чт) 10:54

Доступ к Access mdb из програмы для копирования данных

Сообщение Mckoy » 17.02.2005 (Чт) 11:36

Доброго,

С базами данных кроме как через ADODC не работал, так что сильно не пинайте :).

Есть задача: в прогарамме вводится значение, которое соответстует номеру карточной игры. Этот номер хранится в базе данных. Этому номеру соответствует также еще текстовое поле в БД с раскладом игры. Как соединиться с БД, чтобы она по этому номеру скопировала всю эту текстовую информацию. Вот собственно и задача. Как ее проще реализовать?

Все мнения и коментарии приветствуются

Костя
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 14.02.2005 (Пн) 6:45
Откуда: Новосибирск

Сообщение Костя » 17.02.2005 (Чт) 13:02

А какая база?
Всё бывает!

Mckoy
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 20.06.2002 (Чт) 10:54

Сообщение Mckoy » 17.02.2005 (Чт) 13:05

База Аксес 2000 *.mdb.

Костя
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 14.02.2005 (Пн) 6:45
Откуда: Новосибирск

Сообщение Костя » 17.02.2005 (Чт) 13:22

dim rs as new adodb.recordset
rs.open "select * from имя базы where условия", ну и т.д. А потом работаешь со свойствами объекта rs. Поищи по форуму, здесь подобных премерв море.
Всё бывает!

Mckoy
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 20.06.2002 (Чт) 10:54

Сообщение Mckoy » 17.02.2005 (Чт) 14:24

Хорошо, полазил по сайту нашел простой пример - с него решил и начать. На форме у меня текс_бокс и кнопка. В бокс ввожу номер раздачи, далее обработка кнопки
Код: Выделить всё
Private Sub CmdBase_Click()
Dim db As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim GN As Double

GN = CDbl(HHText.Text)
db.Open "Microsoft Access Driver (*.mdb);DBQ=C:\Temp\hhdb.mdb"
Set rs = db.Execute("Select * from hand_histories WHere game_number=GN")
End Sub


Запускаю, ввожу номер раздачи, жму кнопку - выходит ошибка
(Бл...... - че за байда такая елементарный рисунок в сообщение негде вставить/загрузить :twisted: ) "Источник данных не найден и не указан драйвер, используемый по умолчанию".

В чем подвох...

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 17.02.2005 (Чт) 15:19

Mckoy писал(а):Хорошо, полазил по сайту нашел простой пример - с него решил и начать. На форме у меня текс_бокс и кнопка. В бокс ввожу номер раздачи, далее обработка кнопки
Код: Выделить всё
Private Sub CmdBase_Click()
Dim db As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim GN As Double

GN = CDbl(HHText.Text)
db.Open "Microsoft Access Driver (*.mdb);DBQ=C:\Temp\hhdb.mdb"
Set rs = db.Execute("Select * from hand_histories WHere game_number=GN")
End Sub


Запускаю, ввожу номер раздачи, жму кнопку - выходит ошибка
(Бл...... - че за байда такая елементарный рисунок в сообщение негде вставить/загрузить :twisted: ) "Источник данных не найден и не указан драйвер, используемый по умолчанию".

В чем подвох...
У тебя синтаксическая ошибка. Пиши так
Код: Выделить всё
Set rs=db.Execute("Select * From hand_histories Where game_number=" & GN)

Mckoy
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 20.06.2002 (Чт) 10:54

Сообщение Mckoy » 17.02.2005 (Чт) 15:25

Исправил, все равно эта же ошибка. В дебаге указывает строку db.Open ...

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 17.02.2005 (Чт) 15:29

Строка подключения:
Код: Выделить всё
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<путь к базе>;Persist Security Info=False

Mckoy
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 20.06.2002 (Чт) 10:54

Сообщение Mckoy » 17.02.2005 (Чт) 15:36

Звиняюсь за банальность, Sedge, но в каком месте кода я это должен вписать? Строка в прямом виде выдает ошибку. Провайдер - это что переменная получается?
Может чего не понимаю, но АДОДБ Эктив Иксов я еще не втыкал на форму.

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

Сообщение Konst_One » 17.02.2005 (Чт) 16:00

Код: Выделить всё
Dim sConnectionString as String

sConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\hhdb.mdb;Persist Security Info=False;User ID=Admin;"

db.Open sConnectionString

....


Mckoy
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 20.06.2002 (Чт) 10:54

Сообщение Mckoy » 17.02.2005 (Чт) 16:29

Спасибо, теперь ошибка изчезла :) . Дальше я, правильно или нет решил под корректировать запрос
Код: Выделить всё
Set rs = db.Execute("Select hand_histories.hand_history * From hand_histories Where game_number=" & GN)

Выдал ошибку "Ошибка синтаксиса (пропущен оператор в выражении запроса) "Select hand_histories.hand_history *" "
Наверно опять не так что-то сделал... Я так понял что записи с нужной раздачей я вытащил. Как забрать данные из него с самой раздачей (колонка в таблице называется hand_history)?

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 17.02.2005 (Чт) 18:10

Почитал бы книжечку что ль сначала какую...

"Select * ..." в запросе означает, что хочешь выбрать все столбцы в таблице
Если ты хочешь выбрать только столбец hand_history, так так и пиши:
"Select hand_history From hand_histories Where game_number=" & GN
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Mckoy
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 20.06.2002 (Чт) 10:54

Сообщение Mckoy » 17.02.2005 (Чт) 18:58

Не серчайте на меня. Да, ленив, жаден, местами туп. Характер скрытный/общительный. Вы мне очень помогли. Спасибо.
Не откажите в еще одном вопросе - как мне данные этого поля присвоить обычной текстовой переменной? Вроде все свойства/методы перебрал объекта рекордсет - не могу понять. Ну не доходит до меня. А в статьях только и пишут как использовать компонент дата и через него все красиво получается.

Респект

Mckoy
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 20.06.2002 (Чт) 10:54

Сообщение Mckoy » 17.02.2005 (Чт) 21:32

Спасибо братцы, всем респект - чего хотел то сделал, конечно же с вашей помощью.
Удачи


Вернуться в Базы данных

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

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

    TopList