Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1323074117
Бездомный
2011-12-05 12:35
2012.03.18
Как получить данные из DataSet не меняя его активную запись.


8-1219590082
Agent[007]
2008-08-24 19:01
2012.03.18
Direct3D


2-1322683472
Никита1990
2011-12-01 00:04
2012.03.18
Как определить дату БИОС?


15-1322027613
MBo
2011-11-23 09:53
2012.03.18
Google Doodle


2-1322847714
ffffffee
2011-12-02 21:41
2012.03.18
Как отправить Record через IdTCPClient ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский