Форум: "Начинающим";
Текущий архив: 2012.03.18;
Скачать: [xml.tar.bz2];
Внизпоиск по таблице бд Найти похожие ветки
← →
Scott Storch © (2011-12-06 12:02) [0]В БД есть таблица "Поставщики" (идентификатор, страна, город, название, адрес, телефон, контактное лицо). Нужно реализовать функцию / функции поиска поставщика "по идентификатору", "по стране", "по городу". Для поиска "по стране" и "по городу" нужно предусмотреть возвожность поиска с учетом регистра, частичное / полное совпадение. Пока что есть 2 варианта;
(1). Написать 3 функции:
function FindById(const Id: Integer): Boolean; // <- SELECT-запрос
function FindByCountry(const Country: string; WholeWord, CaseSensitive: Boolean): Boolean; // <- SELECT-запрос
function FindByCity(const City: string; WholeWord, CaseSensitive: Boolean): Boolean; // <- SELECT-запрос
(2). Написать 1 функцию:
function Find(const FieldName: string; const FieldValue: Variant; WholeWord, CaseSensitive: Boolean): Boolean;
FieldName - Id, Country или City
FieldValue - целочисленное значение идентификатора, название страны или название города.
Больше склоняюсь к первому варианту, потому как, если писать одну фнкцию придется проверять, значение полей, т.е., если FieldName = "Id", то нужно проверять, чтобы FieldValue было целочисленным, плюс ко всему, если поиск выполняется "по идентификатору" необходимость в параметрах отпадает.
Что посоветуете?
← →
sniknik © (2011-12-06 12:19) [1]не писать, использовать стандартные. (почитать доку по используемому и найти их)
← →
Scott Storch © (2011-12-06 12:22) [2]Забыл сказать, нужно искать только первую удовлетворяющую условиям поиска запиcь.
function Find(const FieldName: string; FieldValue: Variant; UseFindOptions,
WholeWord, CaseSensitive: Boolean): Boolean;
public
function FindByCity(const City: string; WholeWord,
CaseSensitive: Boolean): Boolean;
function FindByCountry(const Country: string; WholeWord,
CaseSensitive: Boolean): Boolean;
function FindById(const Id: Integer): Boolean;
function TFinder.Find(const FieldName: string; FieldValue: Variant;
UseFindOptions, WholeWord, CaseSensitive: Boolean): Boolean;
var
Options: TLocateOptions;
begin
Options := [];
if UseFindOptions then
begin
if not WholeWord then
Options := Options + [loPartialKey];
if not CaseSensitive then
Options := Options + [loCaseInsensitive];
end;
Result := DataSet.Locate(FieldName, FieldValue, Options);
end;
function TFinder.FindByCity(const City: string; WholeWord,
CaseSensitive: Boolean): Boolean;
begin
Result := Find(CityFieldName, City, WholeWord, CaseSensitive);
end;
function TFinder.FindByCountry(const Country: string; WholeWord,
CaseSensitive: Boolean): Boolean;
begin
Result := Find(CountryFieldName, Country, WholeWord, CaseSensitive);
end;
function TFinder.FindById(const Id: Integer): Boolean;
begin
DataSet.Locate(IdFieldName, Id, False, True, True);
end;
как вы считаете такая реализация годится?
← →
Плохиш © (2011-12-06 12:28) [3]
> как вы считаете такая реализация годится?
>
Если делает то, что нужно, то "Да".
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.03.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c