SQL
3 отговора
156 прегледа
SQL
Niakoi moje li da mi dade ideia ili da me naso4i kak moga da si napi6a query?
Query-to mi izglejda po tozi na4in i 4erpi danni ot Form s dva text box-a.
ISKAM da raboti Query-to i kogato e popalnena informacia samo v edinia textbox
SELECT Table.name,Table.phone
FROM Table
WHERE Table.name=Forms!Form!(textbox1) AND Table.phone=Forms!Form!(textbox2) ;
Query-to mi izglejda po tozi na4in i 4erpi danni ot Form s dva text box-a.
ISKAM da raboti Query-to i kogato e popalnena informacia samo v edinia textbox
SELECT Table.name,Table.phone
FROM Table
WHERE Table.name=Forms!Form!(textbox1) AND Table.phone=Forms!Form!(textbox2) ;
Ми то SQL не съдържа FORM!
Поне аз до сега не съм виждал SQL стандарт да съдържа думата FORM.
Можеш просто да провериш преди да генерираш query какво да бъде query'то.
Аз лично си правя винаги някаква логика преди да се обърна към BD която логика генерира необходимото query.
Тоест имам един char SQL[2048]; и генерирам в него такова съдържание каквото е необходимо според случая.
Можеш просто да провериш преди да генерираш query какво да бъде query'то.
Аз лично си правя винаги някаква логика преди да се обърна към BD която логика генерира необходимото query.
Тоест имам един char SQL[2048]; и генерирам в него такова съдържание каквото е необходимо според случая.
Re: SQL
Става въпрос за MS Access, нали?
Заявката трябва да бъде така, при два критерия за търсене:
Тук, както и при долните примери е зададено условието да не се връщат записи, ако са празни всички кутии с критериите за търсене.
Ако кутиите с критериите за търсене са повече от две, ще е уместно да се избегнат попадения, предизвикани от празни полета в някои записи. Ще илюстрирам модификацията на заявката за два критерия, не е трудно да се съобрази, как трябва да бъде за повече от два:
Горния пример го дадох наизуст, не съм го пробвал - опитай ти.
Може да е по-удобно да се търси по частично въведени тектове в две или повече текстови кутии. Тогава вместо сравняване на низове трябва да се използва оператора LIKE. Ето как:
Вярно е, че заявките са тежички, но не съм измислил начин да ги направя по-ефективни.
Успех!

Заявката трябва да бъде така, при два критерия за търсене:
SELECT Table.name,Table.phone
FROM Table
WHERE
(Nz(Forms!Form![textbox1])<>""
OR
Nz(Forms!Form![textbox2])<>"")
AND
(Table.name=Forms!Form![textbox1])
AND
(Table.phone=Forms!Form![textbox2]);
Тук, както и при долните примери е зададено условието да не се връщат записи, ако са празни всички кутии с критериите за търсене.
Ако кутиите с критериите за търсене са повече от две, ще е уместно да се избегнат попадения, предизвикани от празни полета в някои записи. Ще илюстрирам модификацията на заявката за два критерия, не е трудно да се съобрази, как трябва да бъде за повече от два:
SELECT Table.name,Table.phone
FROM Table
WHERE
(Nz(Forms!Form![textbox1])<>""
OR
Nz(Forms!Form![textbox2])<>"")
AND
IIf(Nz(Forms!Form![textbox1])<>"", Table.name=Forms!Form![textbox1], True)
AND
IIf(Nz(Forms!Form![textbox2])<>"", Table.phone=Forms!Form![textbox2], True);
Горния пример го дадох наизуст, не съм го пробвал - опитай ти.
Може да е по-удобно да се търси по частично въведени тектове в две или повече текстови кутии. Тогава вместо сравняване на низове трябва да се използва оператора LIKE. Ето как:
SELECT Table.name,Table.phone
FROM Table
WHERE
(Nz(Forms!Form![textbox1])<>""
OR
Nz(Forms!Form![textbox2])<>"")
AND
Table.name LIKE IIf(Nz(Forms!Form![textbox1])<>"","*" & Forms!Form![textbox1] & "*", "*")
AND
Table.phone LIKE IIf(Nz(Forms!Form![textbox2])<>"","*" & Forms!Form![textbox2] & "*", "*");
Вярно е, че заявките са тежички, но не съм измислил начин да ги направя по-ефективни.
Успех!