Форум: "Базы";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
ВнизПоиск Найти похожие ветки
← →
Свой (2002-11-02 18:52) [0]Простите возможно это очень легко но я просто не связываюсь с БД но вот пришлось!
Есть таблица парадокс там есть поля mail, log, pas; Так вот мне надо как нить найти сначало запись в поле mail (полное сходство).
Вот а потом надо в этой записи сравнить поля log и pas как это осуществить?
← →
MsGuns (2002-11-02 22:24) [1]Господи, когда же мы научимся вопросы-то задавать ?
Не критикую синтаксис, но СМЫСЛ ?
Что значит "полное сходство" ? Поле mail НД должно соответствовать некоторому задаваемому или известному заранее образцу ? Откуда берется образец ? Вводит в контрол юзер ? Берется из другой таблицы ? Падает с неба как манна небесная ?
То же самое и по log/pas. Их надо друг с другом сравнивать или опять же с некоторыми значениями (см.выше) ?
По поводу методов поиска. Их немало, все зависит от контекста. Если это:
- разовая операция, то лучше всего подойдет SQL-запрос типа
SELECT log, pas
FROM MyTable
WHERE (mail=:pmail) and (log=pas)
- поиск в текущем курсоре на гриде делается методом Locate или FindKey. В некоторых случаях подойдет LookUp
- если выбрать из текущего курсора такие записи и только их показывать в гриде, то фильтрация (св-ва Filter и Filtered)
← →
Свой (2002-11-02 22:58) [2]Что значит "полное сходство" --полное чтоб типа все совпало до символа !!
откуда берется пользователь сам вводит данные (конкретно mail) и я его ищу в базе т.е в таблице а ппотом на это mail я сравниваю введенный пароль и логий и у найденой записи!!!!
Поис просходит часто причет поиск в файле и никуда ни на грид и нигде это не видно. сначало надо найти сходство в mail а потом типа проверить уже лог и пас у этой записи!
← →
oss (2002-11-02 23:20) [3]попробуй использовать фильтры на датасете,
это не поиск через запрос, но тоже вариант
← →
MsGuns (2002-11-03 13:24) [4]>Свой © (02.11.02 22:58)
Понятие "сходство" весьма широко. В отношении же сущностей БД, а именно значений полей, более удобоваримо понятия "совпадение", "частичное совпадение", "регистронечувствительное совпадение" и пр.
В данном случае, к я понял, есть некая физ.таблица (неотображаемая в интерфейсе), хранящая логины и мылы юзеров. Прога должна, получив от сидящего за компом юзверя мыло и логин, быстренько найти запись о нем в таблице и сравнить его лигин с тем, что хранится в табле. Если так, то это делается безо всякого поиска, простым запросом:
procedure TForm1.Form1Button1Click(Sender: TObject);
begin
if qu.Active then
qu.Close;
qu.SQL.Clear;
qu.SQL.Add("SELECT COUNT(*) FROM TableMail");
qu.SQL.Add(" WHERE (mail="""+Form1.edMail.Text+""") and (log="""
+Form1.edLog.Text+""") and (pas="""+Form1.edPas.Text+""")");
try
qu.Prepare;
gu.Open;
except
ShowMessage("Ошибка доступа к реестру эл.почты");
exit;
end;
if qu.RecordCount=0 then
ShowMessage("Не известен адрес или неверен логин/пароль");
else
begin
... // Обслуживание
end;
qu.Close;
end;
или
procedure TForm1.Form1Button1Click(Sender: TObject);
begin
if qu.Active then
qu.Close;
qu.SQL.Clear;
qu.SQL.Add("SELECT COUNT(*) FROM TableMail");
qu.SQL.Add(" WHERE mail="""+Form1.edMail.Text+""";
try
qu.Prepare;
gu.Open;
except
ShowMessage("Ошибка доступа к реестру эл.почты");
exit;
end;
if qu.RecordCount=0 then
begin
ShowMessage("Не известен адрес ");
exit;
end;
if qu.FieldByName("log").AsString<>Form1.edLog.Text then
begin
ShowMessage("Не верно задан логин");
exit;
end;
if qu.FieldByName"pas").AsString<>Form1.edPas.Text then
begin
ShowMessage("Не верно указан пароль");
exit;
end;
// Обслуживание
qu.Close;
end;
← →
MsGuns (2002-11-03 13:31) [5]Пардон, для второго случая перед строкой сравнения полей log и pas надо позиционировать первую запись:
qu.First;
Но это, конечно, если мылы уникальные. Если по одному адресу м.б.несколько логинов, тогда лучше первый вариант или второй, но с Locate по рез.НД (qu) сначала по log. Если найдет, то простое сравнение pas этой же записи с указанным в TEdit
← →
Свой (2002-11-04 21:34) [6]Большое Спасибо !!!
← →
MsGuns (2002-11-04 21:40) [7]пжлст 8)))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c