powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL запрос
25 сообщений из 44, страница 1 из 2
SQL запрос
    #36643123
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте
Сразу к делу:
Код: plaintext
1.
2.
3.
4.
Private Sub Command2_Click()
Data1.RecordSource = "select * from [Автомобили] where [marka_auto] ='" & Text1.Text & "' " & "And [strana] ='" & Text2.Text & "'"
MsgBox Data1.RecordSource
Data1.Refresh
End Sub
У меня есть 2 текстбокса, в которых я ввожу значение1 - марку, и значение2 - страна. Все работает, из бд вытягивает записи. Но мне нужно сделать так, что бы когда, например, в поле "страна" нечего не ввести, оно выводило все записи этого поля. Есть идеи?
...
Рейтинг: 0 / 0
SQL запрос
    #36643145
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
"where [marka_auto] ='" & Text1.Text & "' " & IIf(Text2.Text="", "", "And [strana] ='" & Text2.Text & "'")
...
Рейтинг: 0 / 0
SQL запрос
    #36643180
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за идею, но есть проблема:
Мне нужно сделать iif для всех полей, которые у меня будут.
Вот при попытке сделать для 2х полей, у меня уже пошли проблемы - когда писать and и where.
Код: plaintext
1.
Data1.RecordSource = "select * from [Автомобили] where IIf(Text1.Text = "", "", "[marka_auto] ='" & Text1.Text & "'") & "' " & IIf(Text2.Text = "", "", "And [strana] ='" & Text2.Text & "'")
И это у меня не работает(
...
Рейтинг: 0 / 0
SQL запрос
    #36643184
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очпросто.

Код: plaintext
1.
2.
3.
4.
t = "ляляля where 1=1"
If k1<>"" Then t=t+" and p1='"+k1+"'"
If k2<>"" Then t=t+" and p2='"+k2+"'"
If k3<>"" Then t=t+" and p3='"+k3+"'"
If k4<>"" Then t=t+" and p4='"+k4+"'"
...
Рейтинг: 0 / 0
SQL запрос
    #36643186
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чесно, нечего вообще не понял. Можно подробнее?
...
Рейтинг: 0 / 0
SQL запрос
    #36643188
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscsЧесно, нечего вообще не понял. Можно подробнее?

в переменной t формируется SQL-запрос, который вы выполните.
покурите мой пример повнимательней, а я ушел обедать.
...
Рейтинг: 0 / 0
SQL запрос
    #36643205
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Минут десять смотрел, даже примерно не могу понять, что это. Просто я новичок, первый раз такое вижу Оо
...
Рейтинг: 0 / 0
SQL запрос
    #36643206
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscsМинут десять смотрел, даже примерно не могу понять, что это. Просто я новичок, первый раз такое вижу Оо

блин.
Что конкретно вам не ясно? Тут даже функций нет, только if и присваивание
...
Рейтинг: 0 / 0
SQL запрос
    #36643216
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне не ясно как это вообще относится к моему примеру Оо
Можно написать как это вообще будет применяться в моем запросе? Или пример какой-нибудь с моим запросом, а то я вообще не рублю(
...
Рейтинг: 0 / 0
SQL запрос
    #36643264
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ё
Как же вы дальше-то программировать собираетесь...

Код: plaintext
1.
2.
3.
4.
Dim t As String
t=""
If Text1.Text<>"" Then t=t+" and [marka_auto] ='"+Text1.Text+"'"
If Text2.Text<>"" Then t=t+" and [strana] ='"+Text2.Text+"'"
Data1.RecordSource = "select * from [Автомобили] where 1=1"+t
...
Рейтинг: 0 / 0
SQL запрос
    #36643286
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну написали бы вам такое когда вы начинали, вы бы тоже вряд ли поняли бы. ОГРОМНОЕ спасибо, просто магия) Действительно работает как я и хотел....Хотелось бы конечно понять как)
Код: plaintext
If Text1.Text <> "" Then t = t + " and [marka_auto] ='" + Text1.Text + "'"
Если текст1 не пустой тогда т="and [marka_auto] ='" + Text1.Text + "'"
чето не сильно понимаю(
Дальше
Код: plaintext
If Text2.Text <> "" Then t = t + " and [strana] ='" + Text2.Text + "'"
Если текс2 не пустой тогда and [marka_auto] ='" + Text1.Text + "'" = and [marka_auto] ='" + Text1.Text + "'" + " and [strana] ='" + Text2.Text + "'"
Я правильно понимаю?
Извените за глупый вопрос и кривой почерк, просто всегда хочется до конца разобрать.
...
Рейтинг: 0 / 0
SQL запрос
    #36643302
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, наверное я понял. Но у меня появилась проблема.
Вот если делать этот запрос сразу после отерытия бд то все нормально, но если я до этого запроса открою какую-либо таблицу, тогда при выполнении запроса ошибка, из-за чего это мб? И можно ли это исправить?
...
Рейтинг: 0 / 0
SQL запрос
    #36643315
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscsВот если делать этот запрос сразу после отерытия бд то все нормально, но если я до этого запроса открою какую-либо таблицу, тогда при выполнении запроса ошибка, из-за чего это мб? И можно ли это исправить?

наверное потому что открыта какая-то таблица....

эта...
эта...
...
Рейтинг: 0 / 0
SQL запрос
    #36643322
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дак открыта та же самая таблица Автомобили.
...
Рейтинг: 0 / 0
SQL запрос
    #36643344
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажи пожалуйста как избавиться от ошибки
...
Рейтинг: 0 / 0
SQL запрос
    #36643346
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscs Подскажи пожалуйста как избавиться от ошибки

Поменять переменную а на константу 17 в строке 23.

Я вам дал две ссылки. Когда изучите, мы это поймем и поможем вам исправить программу.
...
Рейтинг: 0 / 0
SQL запрос
    #36643354
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я прочел правила, не пойму что вы от меня хотите?
...
Рейтинг: 0 / 0
SQL запрос
    #36643385
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам что ли сама программа нужна?
...
Рейтинг: 0 / 0
SQL запрос
    #36643395
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
программа запустилась
ошибок не выдала
...
Рейтинг: 0 / 0
SQL запрос
    #36643398
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откройте БД.
Выберите таблицу автомобили в комбобоксе комбо1. Введите в текстбокс текст1 к примеру audi, и нажмите на кнопку. Вот и ошибка(
...
Рейтинг: 0 / 0
SQL запрос
    #36643449
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bosscsОткройте БД.
Выберите таблицу автомобили в комбобоксе комбо1. Введите в текстбокс текст1 к примеру audi, и нажмите на кнопку. Вот и ошибка(

Ваша постоянная проблема, что вы считаете всех экстрасенсами. Даже предоставив программу, вы все равно считаете, что все должны немедленно догадаться, что надо сделать.
Я вас уже отсылал к правилам форума и рекомендациям по оформлению сообщений, вы пропускаете мимо ушей.

По программе:
если заменить
Код: plaintext
Set rs = db.OpenRecordset(Combo1.Text)
на
Код: plaintext
Set rs = db.OpenRecordset("select * from " + Combo1.Text)
то ошибка возникать перестает, и вроде даже выводится нужное количество записей, но почему-то текст в ячейках не отображается.
Причем он не отображается даже если с самого начала (при выборе в комбобоксе1) вывести не всю таблицу, а только ее часть:
Код: plaintext
Set rs = db.OpenRecordset("select * from " + Combo1.Text + " where marka_auto='audi'")

Ни разу не специалист по Data и DBGrid, почему они так себя ведут - не знаю.
...
Рейтинг: 0 / 0
SQL запрос
    #36643501
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно ли как то сделать, что бы база данных как бы заново открылась, при нажатии кнопки Command2, или же обнулилась(Да вообщем любой вариант)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Command2_Click()
Dim t As String
Data1.DatabaseName = CommonDialog1.FileName
Set db = OpenDatabase(CommonDialog1.FileName)
t = ""
If Text1.Text <> "" Then t = t + " and [marka_auto] ='" + Text1.Text + "'"
If Text2.Text <> "" Then t = t + " and [strana] ='" + Text2.Text + "'"
If Text3.Text <> "" Then t = t + " and [LLeHa] =" + Text3.Text
If Text4.Text <> "" Then t = t + " and [KoJIu4ecTBo_DBepeu] =" + Text4.Text
If Text5.Text <> "" Then t = t + " and [O6beM_6aKa] =" + Text5.Text
If Text6.Text <> "" Then t = t + " and [Max_CKopocTb] =" + Text6.Text
If Text7.Text <> "" Then t = t + " and [MowHoCTb] =" + Text7.Text
Data1.RecordSource = "select * from [Автомобили] where 1=1" + t
MsgBox Data1.RecordSource
Data1.Refresh
End Sub

Что то вро ди этого, но это не работает.
...
Рейтинг: 0 / 0
SQL запрос
    #36643502
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ваша постоянная проблема, что вы считаете всех экстрасенсами. Даже предоставив программу, вы все равно считаете, что все должны немедленно догадаться, что надо сделать.


У меня к вам нет никаких претензий, я вам нечего не говорил на счет экстрасенсов, и я не считаю что все должны немедленно догадаться что там не так. Меня устраивает любая помощь.
...
Рейтинг: 0 / 0
SQL запрос
    #36643511
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю. Я по вашему коду даже не очень понимаю, гда база открывается с нужными целями, ибо файл базы вы открываете минимум три раза: в Data1, в db и в db1, все три соединения остаются открытыми, потом вы повторно открываете db зачем-то. А изначально присваиваете рекордсету из Data1 открытый рекордсет через db. В общем, кавардак какой-то....
...
Рейтинг: 0 / 0
SQL запрос
    #36643545
bosscs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем их закрывать?

Код: plaintext
1.
2.
3.
4.
5.
Set db1 = OpenDatabase(CommonDialog1.FileName)
For Each tb1 In db1.QueryDefs
Combo2.AddItem tb1.Name
Next
Exit Sub

Тут я присваиваю дб1 что бы считать запросы. Без этого у меня не получается, а нужно ли закрывать вообще? И как тогда оно работать то будет? Ну в принципе после того как считать запросы можно было бы и закрыть, все равно потом опять открывается) Но я не знаю как) Да и все нормально работает, почти. Запрос блин не выполняется только, если таблица открыта, обидно
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / SQL запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]