SQL + adodc + переменные

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

SQL + adodc + переменные

Сообщение Roland_ » 12.03.2009 (Чт) 21:39

Только не бейте сразу…

Работал с акцесом, с проблем никаких. Теперь столкнулся с SQL… Задача такая. Нужно пробежаться по базе, найти совпадения, и с этой строки в таблице всё передать в переменные…. Примерно так…

Код: Выделить всё
Dim phone As String
Dim name As String
Dim str As String
  str = 20000
Do While Adodc1.Recordset.EOF
        If  20000 = Adodc1.Recordset.Fields("phone") Then
            phone = Adodc1.Recordset.Fields("phone")
            name = Adodc1.Recordset.Fields("name")
        End if
Adodc1.Recordset.MoveNext
Loop


Ну, в обшем, как вы заметили, я пытаюсь работать с SQL как и с ACCESS… Если заменить SQL на ACCESS и Adodc1 на Data1 то всё работает…. А так выдаёт

Object variable or With block variable not set (Error 91)

Я знаю что есть такие прекрасные веши как SQL запрос и датагрилд, но мне нужно результат с нужной строки загнать в переменную….

Пример приведите... плииииззз :)

[Хакер] :: За неиспользование тега [code]...[/code] в следующий раз будет замечание.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: SQL + adodc + переменные

Сообщение Хакер » 12.03.2009 (Чт) 21:58

Object variable or With block variable not set (Error 91)

Где? Значит вернулся Nothing.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Roland_
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 12.03.2009 (Чт) 20:55

Re: SQL + adodc + переменные

Сообщение Roland_ » 12.03.2009 (Чт) 22:02

Хакер писал(а):
Object variable or With block variable not set (Error 91)

Где? Значит вернулся Nothing.


Do While Adodc1.Recordset.EOF

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: SQL + adodc + переменные

Сообщение dr.MIG » 12.03.2009 (Чт) 22:46

Значит в Recordset у тебя ничего нет. Покажи как ты его заполняешь.

Да и вообще, мне кажется не совсем оптимальным такой способ организации поиска по таблице :).
Salus populi suprema lex

Roland_
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 12.03.2009 (Чт) 20:55

Re: SQL + adodc + переменные

Сообщение Roland_ » 12.03.2009 (Чт) 22:56

dr.MIG писал(а):Значит в Recordset у тебя ничего нет. Покажи как ты его заполняешь.

Да и вообще, мне кажется не совсем оптимальным такой способ организации поиска по таблице :).


А какой способ можешь предложить? :D Только, главное данные в переменную загнать…

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: SQL + adodc + переменные

Сообщение dr.MIG » 13.03.2009 (Пт) 20:44

Про adodc у Alibeka хорошая статья была, только она где-то затерялась (а может просто на данный момент её уже нет в открытом доступе). По поводу поиска необходимых тебе данных см. в сторону ExecQuery ("Твой SQL запрос") и ещё в сторону Fields("поле").Find. Примеров по подключению к БД на форуме, кстати, тоже полно.
Salus populi suprema lex

Roland_
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 12.03.2009 (Чт) 20:55

Re: SQL + adodc + переменные

Сообщение Roland_ » 13.03.2009 (Пт) 21:39

dr.MIG писал(а):Про adodc у Alibeka хорошая статья была, только она где-то затерялась (а может просто на данный момент её уже нет в открытом доступе). По поводу поиска необходимых тебе данных см. в сторону ExecQuery ("Твой SQL запрос") и ещё в сторону Fields("поле").Find. Примеров по подключению к БД на форуме, кстати, тоже полно.



Забыл в РекордСоурсе надобыло описать SELECT phone, name
FROM kontakts ....

Спасибо всем.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: SQL + adodc + переменные

Сообщение SSecurity » 13.03.2009 (Пт) 22:09

Можно так:
Код: Выделить всё
Dim RS as new Recordset
Dim SQL as string
SQL = "SELECT phone, name FROM kontakts"
Set RS =  Adodc1.Execute(SQL)


А вообще чтоб было быстрее можно просто в SQL-запросе требуемую операцию прописать ... в вашем случае -
Код: Выделить всё
SQL = "SELECT phone, name FROM kontakts WHERE phone=20000"

или
Код: Выделить всё
SQL = "SELECT phone, name FROM kontakts WHERE phone='20000'"

в зависимости от типа данных.

и вот ещё что ... может я ошибаюсь но вас должен ждать еррор ... :)
Если следовать вашей логике "Пока конец записей делать ЭТО", то наверно ЭТО мы делать будем, только тогда когда у нас записей нет ... что выдаст нам ошибку ... потому что MoveNext никуда дальше не приведет.

Мне кажется правильнее было бы использовать NOT после Do While

:))
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Penumbra
Обычный пользователь
Обычный пользователь
 
Сообщения: 62
Зарегистрирован: 24.01.2009 (Сб) 13:36

Re: SQL + adodc + переменные

Сообщение Penumbra » 14.03.2009 (Сб) 16:31

Roland_ писал(а):
Do While Adodc1.Recordset.EOF

вообщето надобыло так
Код: Выделить всё
Adodc1.Recordset.MoveFirst
'сделай проверку
If Adodc1.Recordset.EOF = True Then бла бла
If Adodc1.Recordset.ВOF = True Then бла бла

'а потом
Do While Adodc1.Recordset.EOF = False
....
    Adodc1.Recordset.MoveNext
Loop

Roland_
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 12.03.2009 (Чт) 20:55

Re: SQL + adodc + переменные

Сообщение Roland_ » 17.03.2009 (Вт) 8:49

Большое спасибо всем. Ваши советы мне очень помогли. :D


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 15

    TopList