powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Новичок: и снова запрос...
7 сообщений из 7, страница 1 из 1
Новичок: и снова запрос...
    #33917427
foxik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть форма с 2 TextBox и 1 кнопкой.
По кнопке запускается SQL-запрос в котором есть такая строчка:
WHERE my_tab.field1=thisform.txt1.value AND my_tab.field2=thisform.txt2.value

Как бы сделать так, чтоб запрос правильно работал, даже если какой-то textbox остался пустой?



*******************************************************
Сколько всего не сделано!
А сколько ещё предстоит не сделать...
...
Рейтинг: 0 / 0
Новичок: и снова запрос...
    #33917470
Valerii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уловие where генеришь как строку и потом
where &wherestring
Как генерить строку - тебе решать ...
...
Рейтинг: 0 / 0
Новичок: и снова запрос...
    #33917471
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
do case
local lcVal1,lcVal2
lcVal1=thisform.txt1.value
lcVal2=thisform.txt2.value
case empt(lcVal1) and empt(lcVal2)
     =messagebox('А так низя! укажите чего-нить!')
case !empt(lcVal1) and !empt(lcVal2)
     select ....
        WHERE my_tab.field1=lcVal1 AND   my_tab.field2=lcVal2
....
ну и так далее для всех случаев

и можно через макроподстановку
Код: plaintext
1.
2.
3.
4.
5.
text to lcCmd textmerge noshow
 select ....
        iif(!empt( )..., 'WHERE  '  ....
endtext
&lcCmd
...
Рейтинг: 0 / 0
Новичок: и снова запрос...
    #33917492
foxik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм, прошу прощения, наверное немного неверно сформулировал вопрос:
У пользователя должна быть возможность искать инфу хотя бы по одному полю , а не обязательно по всем. Т.е. если есть 2 значения, ищем по двум, если нет-ищем по тому, которое есть...

*******************************************************
Сколько всего ещё не сделано!
А сколько ещё предстоит не сделать...
...
Рейтинг: 0 / 0
Новичок: и снова запрос...
    #33917605
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдумайся в то, что тебе уже ответили...
...
Рейтинг: 0 / 0
Новичок: и снова запрос...
    #33917821
foxik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
do case
local lcVal1,lcVal2
lcVal1=thisform.txt1.value
lcVal2=thisform.txt2.value
case empt(lcVal1) and empt(lcVal2)
     =messagebox('А так низя! укажите чего-нить!')
case !empt(lcVal1) and !empt(lcVal2)
     select ....
        WHERE my_tab.field1=lcVal1 AND   my_tab.field2=lcVal2
....
ну и так далее для всех случаев

RedrikВдумайся в то, что тебе уже ответили...

Признаюсь, разобрался только с вышеприведённым способом.
Да, он вполне работоспособный. Но я просто привёл максимально упрощённую задачу. На самом деле textbox'ов на форме больше. И описывать case для всех случаев ...
А надо чтоб пользователь сам мог выбирать поля и их комбинацию, по которым он будет искать запись в таблице.
Я думаю, может стоит попробовать что-то типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
procedure command1.click
LOCAL myvar1,myvar2
 if empty(thisform.text1.value)
     myvar1="%"
 ELSE 
      myvar1=thisform.text1.value
 ENDIF
 IF EMPTY(thisform.text2.value)
      myvar2="%"
 ELSE 
     myvar2=thisform.text2.value
 ENDIF
 
 
 SELECT ....
 ..
WHERE  my_tab.field1  LIKE  myvar1 and my_tab.field2 LIKE myvar2
 ....

Но пробовать буду уж точно не сегодня...
И если можно, подскажите в двух словах, плз, что значит Valerii" условие where генеришь как строку"...
Что-то я об этом не нашёл ни в форуме, ни в help'e

Спасибо всем за помощи :)
...
Рейтинг: 0 / 0
Новичок: и снова запрос...
    #33918054
alex3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
примерно как ты и пишешь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure command1.click
LOCAL USL
 if !empty(thisform.text1.value)
     USL="my_tab.field1="+thisform.text1.value
 ENDIF
if !empty(thisform.text2.value)
     USL=USL+ " AND my_tab.field2="+thisform.text2.value
 ENDIF
... и т.д. 
 
 SELECT ....
 ..
WHERE  &USL
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Новичок: и снова запрос...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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