Merhaba,
Aslında olayı Delphi tarafında çözmektense veri tabanı tarafına bırakmanız işinizi daha hızlı ve sağlıklı şekilde çözecektir.
Delphi kısmında Memo bileşenine yazılanları virgül ile ayırıp tek satır haline getirin.
function PlakaParse(kaynak: TMemo): string;
var
i : integer;
kaynakVirgulParsele: TStringList;
parselenenKaynak : string;
begin
Result := '';
kaynakVirgulParsele := TStringList.Create;
try
kaynakVirgulParsele.Delimiter := ',';
kaynakVirgulParsele.StrictDelimiter := true;
kaynakVirgulParsele.DelimitedText := Stringreplace(Stringreplace(kaynak.Text, #13, ',', [rfReplaceAll, rfIgnoreCase]), #10, '', [rfReplaceAll, rfIgnoreCase]);
kaynakVirgulParsele.Sorted := true;
kaynakVirgulParsele.Duplicates := TDuplicates.dupIgnore;
parselenenKaynak := '';
for I := 0 to kaynakVirgulParsele.Count - 1 do
begin
parselenenKaynak := parselenenKaynak + Trim(kaynakVirgulParsele[i]) + ',';
end;
parselenenKaynak := Copy(parselenenKaynak, 1, Length(parselenenKaynak) - 1);
Result := parselenenKaynak;
finally
FreeAndNil(kaynakVirgulParsele);
end;
end;
Daha sonra veri tabanı tarafına göndererek IN ile çoklu filtre özelliğini kullanın.
MSSQL kullanımı
SELECT
*
FROM
sy_names
WHERE
title IN
(
SELECT VALUE FROM STRING_SPLIT('a,b,c,d,e',',')
)
MySQL kullanımı
SELECT
*
FROM
sy_names
WHERE
title IN (
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX( '1,2,3,4' , ',', n.num), ',', -1)
FROM (
SELECT a.num + b.num * 10 + 1 num
FROM
(SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) a
,(SELECT 0 num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) b
ORDER BY num
) n
WHERE n.num <= 1 + (LENGTH('1,2,3,4') - LENGTH(REPLACE('1,2,3,4', ',', '')))
)
Tüm sorgularınızı veri tabanı tarafında bir prosedür ya da fonksiyon üzerinde yazar iseniz programlama dili tarafında da istediğiniz dili kullanma özgürlüğüne erişirsiniz. Delphi veya bir başka dil fark etmeksizin bağımlılığınız ortadan kalkar. Uygulama tarafı sadece veriyi gönderen ve gösteren olmalı. Verilerle ilgili tüm işlemlerin sunucu kısmında yapılmasını öneririm.