Yorumları: 356
Konuları: 58
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 111 Başlangıç
Arkadaşlar Merhaba; DBComboBox da türkçe karakterli bir veri girdiğimde filtre sonucu sıfır geliyor. Nasıl bir değişiklik yapmam gerekir? Yardımcı olur musunuz?
STOK_KODU ve GRUP_KODU Filitre alanlarım.
procedure TForm25.BitBtn1Click(Sender: TObject);
Var
STSabit : TStatusWindowHandle;
begin
STSabit := CreateStatusWindow('İşlemler Devam Ediyor. Lütfen Bekleyiniz !');
try
Sleep(2000);
finally
RemoveStatusWindow(STSabit);
Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
Form26.StokSabit.SQL.Add('SELECT STOK_KODU,STOK_ADI,GRUP_KODU,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,ALIS_FIAT2,ALIS_FIAT3,ALIS_FIAT4 FROM TBLSTSABIT WHERE 1=1');
if Edit1.Text<>'' then
Form26.StokSabit.SQL.Add('And Stok_Kodu='+ QuotedStr(Edit1.Text));
if DBComboBox1.Text<>'' then
Form26.StokSabit.SQL.Add('And Grup_Kodu='+ QuotedStr(DBComboBox1.Text));
Yorumları: 236
Konuları: 28
Kayıt Tarihi: 05-05-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.184 Programcı
(20-08-2020, Saat: 07:03)OZCANK Adlı Kullanıcıdan Alıntı: Arkadaşlar Merhaba; DBComboBox da türkçe karakterli bir veri girdiğimde filtre sonucu sıfır geliyor. Nasıl bir değişiklik yapmam gerekir? Yardımcı olur musunuz?
STOK_KODU ve GRUP_KODU Filitre alanlarım.
procedure TForm25.BitBtn1Click(Sender: TObject);
Var
STSabit : TStatusWindowHandle;
begin
STSabit := CreateStatusWindow('İşlemler Devam Ediyor. Lütfen Bekleyiniz !');
try
Sleep(2000);
finally
RemoveStatusWindow(STSabit);
Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
Form26.StokSabit.SQL.Add('SELECT STOK_KODU,STOK_ADI,GRUP_KODU,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,ALIS_FIAT2,ALIS_FIAT3,ALIS_FIAT4 FROM TBLSTSABIT WHERE 1=1');
if Edit1.Text<>'' then
Form26.StokSabit.SQL.Add('And Stok_Kodu='+ QuotedStr(Edit1.Text));
if DBComboBox1.Text<>'' then
Form26.StokSabit.SQL.Add('And Grup_Kodu='+ QuotedStr(DBComboBox1.Text));
Uygulama girişinde Database in Collation a bakıyorum.
COLL.Close;
COLL.SQL.Clear;
COLL.SQL.Add('SELECT name, collation_name FROM sys.databases WHERE NAME=' + #39 + sirketadi + #39 + '');
COLL.Open;
if COLLcollation_name.AsString = 'Turkish_CI_AS' then
sqldil := 'E'
else
sqldil := 'H';
function turkce(deger:string):string;
VAR
deger2:string;
begin
deger2:=deger;
if sqldil='H' then
begin
deger2:=StringReplace(deger2,'Ş','Þ', [rfReplaceAll]);
deger2:=StringReplace(deger2,'İ','Ý', [rfReplaceAll]);
deger2:=StringReplace(deger2,'Ğ','Ð', [rfReplaceAll]);
deger2:=StringReplace(deger2,'ı','ý', [rfReplaceAll]);
deger2:=StringReplace(deger2,'ş','þ', [rfReplaceAll]);
deger2:=StringReplace(deger2,'ğ','ð', [rfReplaceAll]);
end;
deger2:=StringReplace(deger2,#39,#39+#39, [rfReplaceAll]);
Result:=#39+deger2+#39;
end;
Yorumları: 26
Konuları: 1
Kayıt Tarihi: 24-06-2020
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 74 Başlangıç
SELECT cümlesinin sonuna şunu bir ekleyip deneyebilirsiniz.
Şunun gibi.
Select * From tablo Where isim like "%Ayşe%" COLLATE SQL_Latin1_General_CP1_CI_AS;
Yorumları: 356
Konuları: 58
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 111 Başlangıç
31-08-2020, Saat: 05:14
(Son Düzenleme: 31-08-2020, Saat: 19:56, Düzenleyen: OZCANK.)
(27-08-2020, Saat: 21:01)ysfckr Adlı Kullanıcıdan Alıntı: SELECT cümlesinin sonuna şunu bir ekleyip deneyebilirsiniz.
Şunun gibi.
Select * From tablo Where isim like "%Ayşe%" COLLATE SQL_Latin1_General_CP1_CI_AS;
Asıl sorunum
SQL Select edince listelenen kayıtların içeriği bu şekilde ;
"'Ş','Þ'"
"'İ','Ý'"
"'Ğ','Ð'"
"'ı','ý'"
"'ş','þ'"
"'ğ','ð'"
DBCombobox1 de türkçe 'ŞADİ' yazdığım zaman boş geliyor. SQL deki 'Ş' ve 'İ' bulamadığı için.
Bu şekilde kullanmayı denedim olmadı.
if DBComboBox1.Text<>'' then
Form26.StokSabit.SQL.Add('And Grup_Kodu='+ QuotedStr(DBComboBox1.Text) COLLATE SQL_Latin1_General_CP1_CI_AS);
Yorumları: 356
Konuları: 58
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 111 Başlangıç
05-09-2020, Saat: 20:27
(Son Düzenleme: 05-09-2020, Saat: 22:50, Düzenleyen: DelphiCan.)
Arkadaşlar SQL de bu şekilde sorgulama yaptığım da Rapor boş geliyor sebebini bir türlü bulamadım rica etsem yardımcı olabilir misiniz ?;
SELECT STOK_KODU,STOK_ADI,GRUP_KODU,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,ALIS_FIAT2,ALIS_FIAT3,ALIS_FIAT4 FROM TBLSTSABIT WHERE GRUP_KODU COLLATE TURKISH_CI_AS='TARİŞYAĞ' AND 1=1
Yorumları: 356
Konuları: 58
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 111 Başlangıç
Arkadaşlar Merhaba;
Türkçe karakter ile başım yine dertte yardımlarınıza ihtiyacım var.
DECLARE @ARA VARCHAR(60)
SET @ARA = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@ARA,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SELECT DBO.TRK(GRUP_KODU) AS GKOD
FROM TBLSTSABIT
where DBO.TRK(GRUP_KODU) LIKE '%T_BET%'
bu şekilde rapor dönüyor ama Delphi 'ye uyarlayamadım.
Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
Form26.StokSabit.SQL.Add('SELECT DISTINCT STOK_KODU,STOK_ADI,GRUP_KODU(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(GRUP_KODU,''Ş'',''_''),''Ç'',''_''),''Ö'',''_''),''İ'',''_''),''Ğ'',''_''),''Ü'',''_'') AS GKOD,'+
'SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,ALIS_FIAT2,ALIS_FIAT3,ALIS_FIAT4 FROM TBLSTSABIT WHERE 1=1');
if Edit1.Text<>'' then
Form26.StokSabit.SQL.Add('And Stok_Kodu='+ QuotedStr(Edit1.Text));
if DBComboBox1.Text<>'' then
Form26.StokSabit.SQL.Add('And Grup_Kodu='+ QuotedStr(DBComboBox1.Text));
if DBComboBox2.Text<>'' then
Yorumları: 229
Konuları: 42
Kayıt Tarihi: 05-08-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.168 Programcı
08-09-2020, Saat: 08:54
(Son Düzenleme: 08-09-2020, Saat: 09:03, Düzenleyen: bydelphi.)
Bir tane procedure yazın orada halledin mesela;
Create Proc Sp_Rapor1 ( @STOK_KODU varchar(30) = null , @GRUP_KODU varchar(30) = null )
as
begin
-- BURADA KARAKTER TEMİZLİĞİN YAPILIYOR
SET @STOK_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@STOK_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @GRUP_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@GRUP_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SELECT DISTINCT STOK_KODU,STOK_ADI,GRUP_KODU GKOD ,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,ALIS_FIAT2,ALIS_FIAT3,ALIS_FIAT4
FROM TBLSTSABIT
WHERE STOK_KODU LIKE '%'+COALESCE( NULLIF( @STOK_KODU , '') , STOK_KODU )+'%' AND GRUP_KODU LIKE '%'+COALESCE( NULLIF( @GRUP_KODU , '') , GRUP_KODU ) +'%'
end
-- bu şekilde çalıştırırsanız koşulsuz tüm tablo gelir
exec Sp_Rapor1
-- bu şekilde çalıştırırsanız stok kodu aliler gelir
exec Sp_Rapor1 @STOK_KODU ='ALİ'
-- bu şekilde çalıştırırsanız grup kodu veliler gelir
exec Sp_Rapor1 @GRUP_KODU ='VELİ'
-- bu şekilde çalıştırırsanız stok kodu aliler ve grup kodu veliler gelir
exec Sp_Rapor1 @STOK_KODU ='ALİ' , @GRUP_KODU ='VELİ'
Sorsaydı Bilirdi Sormuyor ki Bilsin.
Bilseydi Sorardı Bilmiyor ki Sorsun.
Yorumları: 356
Konuları: 58
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 111 Başlangıç
(08-09-2020, Saat: 08:54)bydelphi Adlı Kullanıcıdan Alıntı: Bir tane procedure yazın orada halledin mesela;
Create Proc Sp_Rapor1 ( @STOK_KODU varchar(30) = null , @GRUP_KODU varchar(30) = null )
as
begin
-- BURADA KARAKTER TEMİZLİĞİN YAPILIYOR
SET @STOK_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@STOK_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @GRUP_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@GRUP_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SELECT DISTINCT STOK_KODU,STOK_ADI,GRUP_KODU GKOD ,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,ALIS_FIAT2,ALIS_FIAT3,ALIS_FIAT4
FROM TBLSTSABIT
WHERE STOK_KODU LIKE '%'+COALESCE( NULLIF( @STOK_KODU , '') , STOK_KODU )+'%' AND GRUP_KODU LIKE '%'+COALESCE( NULLIF( @GRUP_KODU , '') , GRUP_KODU ) +'%'
end
-- bu şekilde çalıştırırsanız koşulsuz tüm tablo gelir
exec Sp_Rapor1
-- bu şekilde çalıştırırsanız stok kodu aliler gelir
exec Sp_Rapor1 @STOK_KODU ='ALİ'
-- bu şekilde çalıştırırsanız grup kodu veliler gelir
exec Sp_Rapor1 @GRUP_KODU ='VELİ'
-- bu şekilde çalıştırırsanız stok kodu aliler ve grup kodu veliler gelir
exec Sp_Rapor1 @STOK_KODU ='ALİ' , @GRUP_KODU ='VELİ'
Kardeşim çok teşekkür ederim bu şekilde oldu.
Yorumları: 356
Konuları: 58
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 111 Başlangıç
(08-09-2020, Saat: 09:47)OZCANK Adlı Kullanıcıdan Alıntı: (08-09-2020, Saat: 08:54)bydelphi Adlı Kullanıcıdan Alıntı: Bir tane procedure yazın orada halledin mesela;
Create Proc Sp_Rapor1 ( @STOK_KODU varchar(30) = null , @GRUP_KODU varchar(30) = null )
as
begin
-- BURADA KARAKTER TEMİZLİĞİN YAPILIYOR
SET @STOK_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@STOK_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @GRUP_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@GRUP_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SELECT DISTINCT STOK_KODU,STOK_ADI,GRUP_KODU GKOD ,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,ALIS_FIAT2,ALIS_FIAT3,ALIS_FIAT4
FROM TBLSTSABIT
WHERE STOK_KODU LIKE '%'+COALESCE( NULLIF( @STOK_KODU , '') , STOK_KODU )+'%' AND GRUP_KODU LIKE '%'+COALESCE( NULLIF( @GRUP_KODU , '') , GRUP_KODU ) +'%'
end
-- bu şekilde çalıştırırsanız koşulsuz tüm tablo gelir
exec Sp_Rapor1
-- bu şekilde çalıştırırsanız stok kodu aliler gelir
exec Sp_Rapor1 @STOK_KODU ='ALİ'
-- bu şekilde çalıştırırsanız grup kodu veliler gelir
exec Sp_Rapor1 @GRUP_KODU ='VELİ'
-- bu şekilde çalıştırırsanız stok kodu aliler ve grup kodu veliler gelir
exec Sp_Rapor1 @STOK_KODU ='ALİ' , @GRUP_KODU ='VELİ'
Kardeşim çok teşekkür ederim bu şekilde oldu.
Delphi de şu şekilde mi? Kullanacam;
Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
Form26.StokSabit.SQL.Add('SELECT STOK_KODU,STOK_ADI,GRUP_KODU,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,ALIS_FIAT2,ALIS_FIAT3,ALIS_FIAT4 FROM TBLSTSABIT WHERE 1=1');
if Edit1.Text<>'' then
Form26.StokSabit.SQL.Add('And Stok_Kodu='+ QuotedStr(Edit1.Text));
if DBComboBox1.Text<>'' then
Form26.StokSabit.SQL.Add('And EXECUTE PROCEDURE ''SP_RAPOR1'' ''@GRUP_KODU =''+ QuotedStr(DBComboBox1.Text));
if DBComboBox2.Text<>'' then
Form26.StokSabit.SQL.Add('And Kod_1='+ QuotedStr(DBComboBox2.Text));
if DBComboBox3.Text<>'' then
Yorumları: 229
Konuları: 42
Kayıt Tarihi: 05-08-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.168 Programcı
(08-09-2020, Saat: 10:56)OZCANK Adlı Kullanıcıdan Alıntı: (08-09-2020, Saat: 09:47)OZCANK Adlı Kullanıcıdan Alıntı: Kardeşim çok teşekkür ederim bu şekilde oldu.
Delphi de şu şekilde mi? Kullanacam;
Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
Form26.StokSabit.SQL.Add('SELECT STOK_KODU,STOK_ADI,GRUP_KODU,SATIS_FIAT1,SATIS_FIAT2,SATIS_FIAT3,SATIS_FIAT4,ALIS_FIAT1,ALIS_FIAT2,ALIS_FIAT3,ALIS_FIAT4 FROM TBLSTSABIT WHERE 1=1');
if Edit1.Text<>'' then
Form26.StokSabit.SQL.Add('And Stok_Kodu='+ QuotedStr(Edit1.Text));
if DBComboBox1.Text<>'' then
Form26.StokSabit.SQL.Add('And EXECUTE PROCEDURE ''SP_RAPOR1'' ''@GRUP_KODU =''+ QuotedStr(DBComboBox1.Text));
if DBComboBox2.Text<>'' then
Form26.StokSabit.SQL.Add('And Kod_1='+ QuotedStr(DBComboBox2.Text));
if DBComboBox3.Text<>'' then
Form26.StokSabit.Close;
Form26.StokSabit.SQL.text :=
' EXEC SP_RAPOR1 @GRUP_KODU = '+ QuotedStr(DBComboBox1.Text)+' , @STOK_KODU = '+ QuotedStr(DBComboBox2.Text);
Form26.StokSabit.open;
bu kadar.
kalanını proc zaten hallediyor.
Sorsaydı Bilirdi Sormuyor ki Bilsin.
Bilseydi Sorardı Bilmiyor ki Sorsun.
|