sql 2005 türkçe karakter sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
sunye
Üye
Mesajlar: 105
Kayıt: 24 Ağu 2004 04:49
Konum: izmir

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen sunye »

Kod: Tümünü seç

DEPO_KODU LIKE '%'+COALESCE( NULLIF( @DEPO_KODU , '') , DEPO_KODU ) + '%' AND
SUBE_KODU LIKE '%'+COALESCE( NULLIF( @SUBE_KODU , '') , SUBE_KODU ) + '%'  

DEPO_KODU ve SUBE_KODU alanları sayısal alan

Kod: Tümünü seç

DEPO_KODU =COALESCE( NULLIF( @DEPO_KODU , '') , DEPO_KODU )  AND
SUBE_KODU =COALESCE( NULLIF( @SUBE_KODU , '') , SUBE_KODU )  
olarak çalıştırırsan sorun olmaz. bunun yerine okuduğun değeri çevirmek daha kolay olmaz mı?

TİBET -> TÝBET gibi.
Resim

Resim
Bildiğim tek şey, hiç bir şey bilmediğim.
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

Öncelikle teşekkür ederim yardımın için. Bu şekilde çevirdim ama where den sonra isteğe göre alanları seçmesi gerekiyor AND dediğim için ya hepsi dolu olacak yada rapor boş dönecek burdada takıldım rica etsem burdada yardım edermisin ?
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

Bu şekilde düzenleme yaptım ama rapor boş geliyor. Başka nasıl bir şekilde raporlayabilirim ?

Kod: Tümünü seç

if Edit1.Text<>'' then
Form26.StokSabit.SQL.Text:='EXEC SP_EMANETTRK @STOK_KODU='+QuotedStr(Edit1.Text)+'';
if DBComboBox1.Text<>'' then
Form26.StokSabit.SQL.Add('EXEC SP_EMANETTRK @GRUP_KODU ='+QuotedStr(DBComboBox1.Text)+'');
if DBComboBox2.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @KOD_1 ='+QuotedStr(DBComboBox2.Text)+'';
if DBComboBox3.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @KOD_2 ='+QuotedStr(DBComboBox3.Text)+'';
if DBComboBox4.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @KOD_3 ='+QuotedStr(DBComboBox4.Text)+'';
if DBComboBox5.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @KOD_4 ='+QuotedStr(DBComboBox5.Text)+'';
if DBComboBox6.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @KOD_5 ='+QuotedStr(DBComboBox6.Text)+'';
if DBComboBox7.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @DEPO_KODU ='+QuotedStr(DBComboBox7.Text)+'';
if Edit9.Text<>'' then
Form26.StokSabit.SQL.text:='EXEC SP_EMANETTRK @SUBE_KODU ='+ QuotedStr(Edit9.Text)+'';
Form26.StokSabit.Open;
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ertank »

Türkçe karakter problemini çözmek daha kolay olmaz mı acaba? Kendi uygulamanız içinden sorgu bileşenleri ile raporlama yapabilirsiniz bu şekilde diye düşünüyorum.
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

Bu şekilde de rapor boş neden gelir anlamadım bakabilir misiniz?

Kod: Tümünü seç

exec SP_EMANETTRK @GRUP_KODU='TİBET' , @KOD_1 = '' , @KOD_2 = '' , @KOD_3 ='' , @KOD_4 = '' , @KOD_5 = '0' , @DEPO_KODU = '0' , @SUBE_KODU = '0'
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

ertank kardeşim yapamadım. Nasıl yapabileceğimi bilmediğim için yardım istiyorum.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ertank »

SQL Server sürümü ve veritabanı özelliklerini detaylı paylaşabilir misiniz?

Mümkün ise sorunu gösteren önemsiz veriler içeren SQL Server 2012 veya öncesine ait veritabanı yedeği (veya uyumlu SQL komutları şeklinde yedek) daha rahat olacaktır.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen freeman35 »

Türkçe sorununa bir şey diyemem, mikisoft u hiç kullanmadım.
where
( STOK_KODU IS NULL or LIKE '%STOK_KODU'%' )
AND
( GRUP_KODU IS NULL or GRUP_KODU LIKE '%GRUP_KODU'%' )

Koşul sıralamalarını, en az sonucu döndürecek olanı ilk sıraya koyun. yani 1000 kayıttan 100 kayıda hangisi düşürecekse onu yazın, sonraki koşul bu 100 kayıda uygulanır.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: Çözüldü sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

Arkadaşlar sorun şu şekilde çözüldü. Emeği geçen herkese çok teşekkür ederim.


İki aşamada çözüldü. Birinci aşamada FUNCTION ile karakterler dönüştürüldü;

Kod: Tümünü seç

CREATE FUNCTION [dbo].[EMANETTRK]
(@STR NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)  
AS 
BEGIN
 DECLARE @TMP NVARCHAR(MAX) 

 IF @STR IS NULL 
 SET @TMP = NULL 
 ELSE
 BEGIN

 SET @TMP = REPLACE(@STR COLLATE LATIN1_GENERAL_BIN, CHAR(208), NCHAR(286))
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(220), NCHAR(220))
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(222), NCHAR(350))
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(221), NCHAR(304))
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(214), NCHAR(214))
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(199), NCHAR(199))
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(240), NCHAR(287))
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(252), NCHAR(252))
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(254), NCHAR(351))
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(246), NCHAR(246))
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(231), NCHAR(231))
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(253), NCHAR(305))

 END

 RETURN @TMP
END
İkinci olarak da PROCEDURE ile sorgulama kriterleri verildi;

Kod: Tümünü seç

ALTER PROC [dbo].[SP_EMANETTRK]  
( @STOK_KODU Nvarchar(150) = null ,   
 @GRUP_KODU Nvarchar(150) = null ,
 @KOD_1 Nvarchar(80) = null ,
 @KOD_2 Nvarchar(80) = null ,
 @KOD_3 Nvarchar(80) = null ,
 @KOD_4 Nvarchar(80) = null , 
 @KOD_5 Nvarchar(80) = null ,
 @DEPO_KODU smallint = null ,
 @SUBE_KODU smallint = null )
AS
BEGIN
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 
     ISNULL(dbo.EMANETTRK(STOK_KODU),'') LIKE '%'+ISNULL(COALESCE( NULLIF( @STOK_KODU , N'') , dbo.EMANETTRK(STOK_KODU) ),'') +'%' 
     AND ISNULL(dbo.EMANETTRK(GRUP_KODU),'') LIKE '%'+ISNULL(COALESCE( NULLIF( @GRUP_KODU , N'') , dbo.EMANETTRK(GRUP_KODU) ),'') +'%' 
     AND ISNULL(dbo.EMANETTRK(kod_1),'')  = ISNULL(COALESCE( NULLIF( @KOD_1 , N'') , dbo.EMANETTRK(kod_1) ),'') 
 AND ISNULL(dbo.EMANETTRK(kod_2),'') =  ISNULL(COALESCE( NULLIF( @KOD_2 , N'') , dbo.EMANETTRK(kod_2) ),'') 
     AND ISNULL(dbo.EMANETTRK(kod_3),'') =  ISNULL(COALESCE( NULLIF( @KOD_3 , N'') , dbo.EMANETTRK(kod_3) ),'') 
 AND ISNULL(dbo.EMANETTRK(kod_4),'') =  ISNULL(COALESCE( NULLIF( @KOD_4 , N'') , dbo.EMANETTRK(kod_4) ),'') 
 AND ISNULL(dbo.EMANETTRK(kod_5),'') =  ISNULL(COALESCE( NULLIF( @KOD_5 , N'') , dbo.EMANETTRK(kod_5) ),'') 
 AND ISNULL(dbo.EMANETTRK(DEPO_KODU),'') = ISNULL(COALESCE( NULLIF( @DEPO_KODU ,N'') , dbo.EMANETTRK(DEPO_KODU)),'')
     AND ISNULL(dbo.EMANETTRK(SUBE_KODU),'') = ISNULL(COALESCE( NULLIF( @SUBE_KODU ,N'') , dbo.EMANETTRK(SUBE_KODU)),'')
END
GO
Tek Procedure haline getirebilirmiydi onu yapamadım.
Cevapla