Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> динамические запросы, в VB 
:(
    Опции темы
Vidocq
Дата 17.1.2005, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



как в ВБ6 пользоваться динамическими запросами типа
Код

SqlText = "SELECT * FROM TableName WHERE id=" & ID;

Использую DAO.

какие библиотеки для этого подключать?
PM MAIL ICQ   Вверх
Naghual
Дата 17.1.2005, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Цитата
Использую DAO.
какие библиотеки для этого подключать?

Так уже никаких и не надо. Ты же уже используеш ДАО!
Или я не понял вопрос?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Vidocq
Дата 17.1.2005, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



2 Naghual
Нет, дело в том, что так как делаю я - не работает...
Аллах с ним (с ДАО:))!
я хочу понять, как ПРАВИЛЬНО писать такого рода запросы...
PM MAIL ICQ   Вверх
Exception
Дата 17.1.2005, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Это?
Код

Dim db As DAO.Database
Set db = OpenDatabase("c:\test.mdb")
Dim rs As DAO.Recordset
Dim SqlText As String
SqlText = "SELECT * FROM TableName WHERE id=" & ID;
Set rs = db.OpenRecordset(SqlText)

PM   Вверх
Gannibal
Дата 17.1.2005, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 742
Регистрация: 15.4.2003
Где: 010101

Репутация: 18
Всего: 17





--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Vidocq
Дата 17.1.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



2 Run-time error
Код

Dim db As DAO.Database
Set db = OpenDatabase("c:\test.mdb")
Dim rs As DAO.Recordset
Dim SqlText As String
SqlText = "SELECT * FROM TableName WHERE id=" & ID;
Set rs = db.OpenRecordset(SqlText)


вот так как раз и не работает, по крайней мере в цикле, где ID постоянно
изменяется



--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Akina
Дата 17.1.2005, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Vidocq @ 17.1.2005, 18:41)
вот так как раз и не работает, по крайней мере в цикле, где ID постоянно изменяется

Чудеса, аднака... код - в студию. С указанием места и номера ошибки или неправильной выборки.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Naghual
Дата 17.1.2005, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Ага. А что такое "TableName"? Это так таблица называется?
smile


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Vidocq
Дата 17.1.2005, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



2 Naghual

ну да
ЗЫ. Ты чего, прикалуешься? ;)


--------------------
Всё течёт ©
PM MAIL ICQ   Вверх
Naghual
Дата 17.1.2005, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Да так. Обычно TableName это переменная, содержащая имя таблицы. Как переводится.
Возможно нужно написать так:
Код

SqlText = "SELECT * FROM " & TableName & " WHERE ID = " & ID


И потом. Что такое "ID;"? К чему там ";"?

Это сообщение отредактировал(а) Naghual - 17.1.2005, 18:17


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Gannibal
Дата 17.1.2005, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 742
Регистрация: 15.4.2003
Где: 010101

Репутация: 18
Всего: 17



а если вот так?

Использование SQL-запросов (Structured Query Language) для работы с БД в ваших программах.
Для демострации возможностей SQL мы создадим небольшую программу. Для этого: 1. Загрузите Visual Basic
2. Создайте Standart EXE
3. Щелкните на Project, Components и у вас появится список на экране. Выберите в этом списке 'Microsoft FlexGrid Control 6.0' и щелкните OK. Контрол под названием FlexGrid позволит нам показать ответы на вопросы, касающиеся баз данных.
3. Далее, добавьте следующие контролы в форму. Добавьте Text Box, Command Button, Data control и собственно, MSFlexGrid.
4. В окне Properties щелкните на свойстве 'DataSource'. Из появившегося списка выберите 'Data1'.
5. Измените свойство DatabaseName так, чтобы оно указывало на базу данных Nwind.mdb. Обычно она расположена в "C:\Program Files\Microsoft Visual Studio\VB98\Nwind.mdb"
6. Теперь вставьте следующий код:


Код

On Error GoTo ErrHandle
Data1.RecordSource = Text1.TextData1.Refresh
Exit Sub
ErrHandle:MsgBox "У нас проблемы!"


Отлично! Теперь я расскажу, как это работает

Во-первых, мы добавили контрол FlexGrid. Он является точо таким же контролом, как и CommandButton или CheckBox.

Этот контрол позволяет легко просматривать все записи, находящиеся в нашей базе.

Теперь мы зададим "вопрос" нашей базе на SQL и таким образом "скажем" ей, что результаты должны появлятся в FlexGrid.

Нажмите F5, чтобы запустить программу. Наберите в текстовом поле 'Customers' и нажмите кнопку. Вы увидите кучу колонок с разнообразной информацией.

Но теперь давайте представим, что нам нужно показывать не всю таблицу, а только контактные имена. Только вот как это сделать?

Для этого используем SQL. В текстовом поле напишите:

Select ContactName from Customers

что означает примерно следующее: "Покажи мне все, что находится в столбце ContactName из таблицы Customers. Или вот еще один пример:

Select ContactName, ContactTitle from Customers

Только не говорите вашим друзьям, что SQL -- это очень просто. Лучше купите книжку...;)

Кстати, SQL-запросы можно создавать из Access, где они именуются Query.

В этой статье я, как и обещал, познакомил вас с SQL. В следующей статье мы изучим SQL несколько больше.






--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Naghual
Дата 17.1.2005, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



2 M.E.G.U.S: Ну и что ты этим хотел сказать?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Gannibal
Дата 17.1.2005, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 742
Регистрация: 15.4.2003
Где: 010101

Репутация: 18
Всего: 17



2 Naghul он ведь хотел знать как в ВБ пользоваться запорасами вот я ему и ответил в принципе понятно всё .. а ты что подумал?


--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Flotskiy
Дата 18.1.2005, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



Доброе утро всем!
Код

       Option Explicit
Dim adoConnection As ADODB.Connection
Dim adoRecordset As ADODB.Recordset
-----------------------------------------------------
Private Sub Command1_Click()

Set adoConnection = New ADODB.Connection
Set adoRecordset = New ADODB.Recordset

connectString = "Provider=Microsoft.Jet.OLEDB.3.51;" _
                & "Data Source=" & gDataBaseName' -путь, указанный в Global.bas

  Data1.RecordSource = "SELECT Family " & _
                         "FROM Glavnaja WHERE ID=" & ID
                         "ORDER BY  Family"
   Data1.Refresh
' Glavnaja-название таблицы
' Family - поле в таблице
' ID - счетчик этой таблицы
End Sub

На форме Data1, DBGrid1( или MSFlexGrid), кнопка Command1
Так у меня работают уйма приложений , может поможет.
Всего доброго.

Это сообщение отредактировал(а) Flotskiy - 18.1.2005, 06:40
--------------------
FlotskiySk k
PM MAIL   Вверх
Naghual
Дата 18.1.2005, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Ну а где виновник торжества Vidocq?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Vidocq
Дата 18.1.2005, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



2 Naghual
та я здеся. Просто времени - не особо мно...

2 M.E.G.U.S
Спасибо, но это чуть не то

2 Flotskiy
Спасибо, я попробую так

Добавлено @ 10:47
2 Naghual
ну с ";" - это я погорячился smile
PM MAIL ICQ   Вверх
Vidocq
Дата 18.1.2005, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



2 Akina

Цитата

Чудеса, аднака... код - в студию. С указанием места и номера ошибки или неправильной выборки.


Блин, я протупил... smile
код смогу запостить только вечером, так как с работы это нереально.
Прошу у всех прощенья и терпения

PM MAIL ICQ   Вверх
Vidocq
Дата 19.1.2005, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 15.12.2004
Где: Запорожье, Украин а

Репутация: нет
Всего: 7



Короче, факамаза раз эдак 35 с половиной а потом ещё, до упора и по самое не балУйся!!!

нет слов и даже букв, одни выражения....

ВБ даже после переустановки категорически отказывается работать с СУБД (аксес 2000, кому интересно - идти на мой топик "траблы с эктивХ" http://forum.vingrad.ru/index.php?showtopic=39043)

запостить код из дому не вышло по причине неоткрывания браузером ИМЕННО ЭТОГО топика.

в общем, по памяти код выглядит примерно так:

Код

Do Until rsAllPoints.EOF = True
     SqlText = "SELECT * FROM TableName WHERE points like" &      rsAllPoints.Fields("Points")
     Set rsIllness = db1.OpenRecordset(SqlText, dbOpenDynaset)
     'и вот то ли здесь


For i = 0 To MyDct.Count - 1
     If MyDct.Keys(i) = rsAllPoints.Fields("Points") Then
     
     '... то ли здесь начинается всякая хня. Код ошибки не помню, но   вроде   бы "нет такого метода"
     OutputBox.Text =rsIllness.Fields("Illness") &vbTab& MyDct.Keys(i) & vbTab & MyDct.Items(i) & vbCrLf & OutputBox.Text
     End If
Next i
rsAllPoints.MoveNext
Loop


PM MAIL ICQ   Вверх
Flotskiy
Дата 19.1.2005, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 15.11.2004
Где: г. Омск

Репутация: 1
Всего: 2



Добрый вечер всем!
Не верно
Код

SqlText = "SELECT * FROM TableName WHERE points like" &      rsAllPoints.Fields("Points")  

Нужно
Код

SqlText = "SELECT * FROM TableName WHERE points like'*" &      rsAllPoints.Fields("Points") & "*'"
   

С уважением

Это сообщение отредактировал(а) Flotskiy - 19.1.2005, 15:10
--------------------
FlotskiySk k
PM MAIL   Вверх
krulik
Дата 27.4.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 14.1.2006
Где: Украина, Житомир

Репутация: нет
Всего: 4



Извините за вопрос. Прочитал все что тут написано но так ничего и не смог реализовать.
По сути мне нужно тоже самое. Из БД выбрать одно значение и записть его в текстовое поле.
Может ли мне ктонибудь толком объяснить как выбрать чтолибо из таблицы! Или хотябы на метериалы где это можно почитать.
Работа естественно с Access

ЗЫ: должен заметить что с VB второй раз в жизни стыкаюсь но очень нужно сделать.  
--------------------
Каждый день несет в себе частицу вечности (Паоло Коэльо)Если вам плюют в спину, значит вы в переди! (Конфуций)Все, что имеет форму, может исчезнуть в одно мгновение (Харуки Мураками)
PM MAIL ICQ   Вверх
Voldemar2004
Дата 30.4.2006, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Цитата(krulik @  27.4.2006,  18:04 Найти цитируемый пост)
Из БД выбрать одно значение и записть его в текстовое поле.
krulik, лучше вместо этого привязать текстовое поле к полю таблицы:

налепи на форму Data1, в свойстве DatabaseName пропиши например: "C:\Visual Studio 6\VB98\BIBLIO.MDB" (или другую БД какая там у тебя). Выбери RecordSource - поле, например "Авторы".
Налепи ТекстБокс - укажи ДатаСорс - Data1, затем ДатаФилд (поле данных) - "Авторы" (или чего ты там хочешь). Все. Если хочешь SQL, то сделай тип РекодрСета динамический (1-Dynaset). В РекордСорс вставляй: Select <поле1, 2, .... , n> from <таблица> where <поле1, 2, .... , n> = <условие>


Цитата(krulik @  27.4.2006,  18:04 Найти цитируемый пост)
Работа естественно с Access
Без разницы с каким типом БД ты работаешь - просто меняешь драйвер/поставщика данных.
 


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
LexuSS
Дата 17.4.2009, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.10.2007

Репутация: нет
Всего: нет



Еще вопросик, а если у меня запрос типа UPDATE.
Как надо писать?
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0665 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.