sql 2005 türkçe karakter sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

N li ve N siz de kayıt gelmiyor ama şöyle bir şey var benim grup kodunu rehber olarak kullandığım sorguda TİBET yazınca TİBET ler geliyor ama tablo TBLSTGRUP
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

Rehberden seçince Edit9.Text e geliyor kod ve TBLSTSABIT Tablosundakiyle eşleşiyor

Kod: Tümünü seç

SGrupK.Close;
SGrupK.SQL.Clear;
SGrupK.SQL.Add('SELECT DISTINCT GRUP_KOD,GRUP_ISIM FROM TBLSTGRUP WHERE GRUP_ISIM LIKE :GRUP_ISIM');
SGrupK.Parameters.ParamByName('GRUP_ISIM').Value:=Edit10.text+'%';
SGrupK.Open;
SGrupK.Active:=True;
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

GRUP_ISMI ni GRUP_KOD olarak değiştirdim sorun yok. Kayıt geliyor
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen mrmarman »

Aslında bu da bir sorun, sen INNER JOIN'lerde iki tabloyu birbirine bağladığında ilişki kurulamayacak anlamına da geliyor.

(1) Bu tablolarak bu GRUP isimleri nereden girilmiş yine Netsis'in kendisinden mi ?
(2) Veritabanı bir yerden başka bir yere migrate edilmiş mi ? Taşınmış mı ? Taşıma sırasında SQLServer kurulumunda tablo yapısı farklılaşmış olabilir mi ?

bu sorular da önemli.

Parametre geçmesi konusunda

Kod: Tümünü seç

IskontoRap.SQL.Clear;
IskontoRap.SQL.Add('SELECT GRUP_KODU FROM TBLSTSABIT WHERE GRUP_KODU = :KODUMUZ');
IskontoRap.Parameters.ParamByName('KODUMUZ').Value := '%TİBET%';
IskontoRap.Active := True;
şeklinde de bir dener misin ? Acaba başında sonunda bir boşluk mu var diye aklıma geldi. Belki de sorun sadece 'İ' değil başı sonu boşluk vs.
Resim
Resim ....Resim
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

TBLSTGRUP Ayrı bir tablo GRUP_KOD , GRUP_ISIM
TBLSTSABIT deki GRUP_KODU ile eşliyorum
GRUP_KOD=GRUP_KODU

Sonuç da kayıt gelmedi yine
uzak bağlantı verebilirim sizde bakabilirsiniz dediğim gibi kaçırdığım olabilir.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen mrmarman »

Kod: Tümünü seç

GRUP_KOD COLLATE TURKISH_CI_AS =GRUP_KODU COLLATE TURKISH_CI_AS
şeklinde eşlemeyi deneyin diycem ama içerik karakterler farklı olduğuna göre COLLATE çalışmaz. Collate olayı sadece (ı) nın büyüğü (I); (i) nin büyüğü (İ) vb. olayıdır. Harf i değilse onun büyüğü diye bir kavram da olmayacak.

Tekrar sorayım,
(1) Bu tablolarak bu GRUP isimleri nereden girilmiş yine Netsis'in kendisinden mi ?
(2) Veritabanı bir yerden başka bir yere migrate edilmiş mi ? Taşınmış mı ? Taşıma sırasında SQLServer kurulumunda tablo yapısı farklılaşmış olabilir mi ?

Bir AMMYY ID'si alabilir miyim... Bir de kendim bakayım
Resim
Resim ....Resim
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 oldu TİBET leri süzebildim

Kod: Tümünü seç

IskontoRap.Close;
IskontoRap.SQL.Clear;
IskontoRap.SQL.Add('SELECT * FROM TBLSTSABIT WHERE GRUP_KODU LIKE :GRUP_KODU');
IskontoRap.Parameters.ParamByName('GRUP_KODU').Value:=Edit9.text+'%';
IskontoRap.Open;
IskontoRap.Active:=True;
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

mrmarman üstadımızla sorun çözülmüştür kodu veriyorum ;

eski hali

Kod: Tümünü seç

            'INNER JOIN TBLCASABIT AS E ON B.CARI_KODU=E.CARI_KOD WHERE A.STHAR_TARIH between :IsTarih1 AND :IsTarih2 AND D.GRUP_KODU='+#39+''+Edit9.Text+''+#39+' AND A.STHAR_FTIRSIP=''2'' '+        
yeni hali

Kod: Tümünü seç

D.GRUP_KODU=:YENIKOD  // bu bölümü değiştirdik 

Kod: Tümünü seç

Parameters.ParamByName('YENIKOD').Value := Edit9.Text; // burayı ekledik

Kod: Tümünü seç

             '((A.STHAR_GCMIK * A.STHAR_BF) * (((A.STHAR_SATISK * 100000))/100) + ((A.STHAR_GCMIK * A.STHAR_BF - (A.STHAR_GCMIK * A.STHAR_BF) * '+
             '(((A.STHAR_SATISK * 100000))/100)) * A.STHAR_SATISK2/100) )) * A.STRA_SATISK3/100 ))) * A.STRA_SATISK4/100))) * A.STRA_SATISK5/100))) * A.STRA_SATISK6/100 AS Iskonto6, '+
             'A.STHAR_BF * A.STHAR_GCMIK AS BRUT_TOPLAM FROM TBLSTHAR AS A INNER JOIN TBLFATUIRS AS B ON B.FATIRS_NO=A.FISNO INNER JOIN TBLSTSABIT AS D ON A.STOK_KODU=D.STOK_KODU '+
             'INNER JOIN TBLCASABIT AS E ON B.CARI_KODU=E.CARI_KOD WHERE A.STHAR_TARIH between :IsTarih1 AND :IsTarih2 AND D.GRUP_KODU=:YENIKOD AND A.STHAR_FTIRSIP=''1'' '+
             'GROUP BY A.STOK_KODU,A.STHAR_GCMIK, A.STHAR_BF, D.STOK_ADI,D.GRUP_KODU,E.CARI_KOD, E.CARI_ISIM, B.FATIRS_NO, A.STHAR_TARIH, B.BRUTTUTAR, B.SAT_ISKT,A.STHAR_SATISK, A.STHAR_SATISK2, '+
             'A.STRA_SATISK3, A.STRA_SATISK4, A.STRA_SATISK5, A.STRA_SATISK6, B.GEN_ISK1O, B.GEN_ISK1T, B.GEN_ISK2O, B.GEN_ISK2T, B.GEN_ISK3O, B.GEN_ISK3T, B.KDV, B.GENELTOPLAM';

    Parameters.ParamByName('YENIKOD').Value := Edit9.Text;
    Parameters.ParamByName('IsTarih1').Value := DateTimePicker1.Date;
    Parameters.ParamByName('IsTarih2').Value := DateTimePicker2.Date;
    Active := True;
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

Arkadaşlar Merhaba;
Türkçe karakter ile başım yine dertte yardımlarınıza ihtiyacım var.

Kod: Tümünü seç

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.

Kod: Tümünü seç

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
ertank
Kıdemli Üye
Mesajlar: 1652
Kayıt: 12 Eyl 2015 12:45

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ertank »

Merhaba,

Yapmak istediğiniz tam olarak nedir? Rapor dönüyor dediğiniz kısımda @ARA SQL içinde kullanılmamış gibi. Ya da eksik bilgi verdiğiniz için yapmak istediğiniz anlaşılmıyor. Emin olmamakla birlikte belki farklı bir yöntem ile sorununuzu çözmeniz mümkün olabilir. Örnek veriler ve daha detaylı bilgiler ile daha anlaşılır şekilde sorunuzu revize etmenizde fayda var.
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

Yapmak istediğim şu bir tablom var ve bu tabloda GRUP_KODU var bu alanı DBComboBox1.text de yazarak filitre etmek istiyorum. Ama GRUP_KODU türkçe karakterler içermekte ve bu yüzden rapor boş geliyor. Yapmak istediğim türkçe karakterleri nasıl filitre edebilirim?
ertank
Kıdemli Üye
Mesajlar: 1652
Kayıt: 12 Eyl 2015 12:45

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ertank »

Filtreleme bilgisi ile birlikte örnek veriler paylaşmanız mümkün mü?
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

ertank öncelikle teşekkür ederim ilgin ve alakan için. Filitre yaptığım yer burası;

Kod: Tümünü seç

Form26.StokSabit.Close;
Form26.StokSabit.SQL.Clear;
Form26.StokSabit.SQL.Add('SELECT STOK_KODU,STOK_ADI,DBO.TRK(GRUP_KODU) AS 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));
if DBComboBox2.Text<>'' then
   Form26.StokSabit.SQL.Add('And Kod_1='+ QuotedStr(DBComboBox2.Text));
if DBComboBox3.Text<>'' then
   Form26.StokSabit.SQL.Add('And Kod_2='+ QuotedStr(DBComboBox3.Text));
if DBComboBox4.Text<>'' then
   Form26.StokSabit.SQL.Add('And Kod_3='+ QuotedStr(DBComboBox4.Text));
if DBComboBox5.Text<>'' then
   Form26.StokSabit.SQL.Add('And Kod_4='+ QuotedStr(DBComboBox5.Text));
if DBComboBox6.Text<>'' then
   Form26.StokSabit.SQL.Add('And Kod_5='+ QuotedStr(DBComboBox6.Text));
if DBComboBox7.Text<>'' then
   Form26.StokSabit.SQL.Add('And Depo_Kodu='+ QuotedStr(DBComboBox7.Text));
if Edit9.Text<>'' then
   Form26.StokSabit.SQL.Add('And Sube_Kodu='+ QuotedStr(Edit9.Text));
Form26.StokSabit.Open;
Form25.Hide;
Form26.Show;
End;
End;
Veri tabanın da TBLCASABIT de GRUP_KODU alanı mesela "TİBET" kodu "TÝBET" şeklinde görünüyor.
ertank
Kıdemli Üye
Mesajlar: 1652
Kayıt: 12 Eyl 2015 12:45

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ertank »

SQL Server sürümünü ve tablo CREATE TABLE DDL bilgisini paylaşabilir misiniz?
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

Arkadaşlar bir yerde hata alıyorum ama çözemedim bana yardımcı olur musunuz?


Procedure bu ;

Kod: Tümünü seç

ALTER PROC [dbo].[SP_EMANETTRK] 
               ( @STOK_KODU varchar(30) = null ,
    @GRUP_KODU varchar(30) = null , 
@KOD_1 varchar(8) = null ,
                @KOD_2 varchar(8) = null ,
@KOD_3 varchar(8) = null , 
@KOD_4 varchar(8) = null , 
@KOD_5 varchar(8) = null ,
@DEPO_KODU smallint = null,
@SUBE_KODU varchar(10) = null
)
AS
BEGIN
SET @STOK_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@STOK_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @GRUP_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@GRUP_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @KOD_1 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@KOD_1,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @KOD_2 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@KOD_2,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @KOD_3 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@KOD_3,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @KOD_4 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@KOD_4,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @KOD_5 = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@KOD_5,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @DEPO_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@DEPO_KODU,'Ş','_'),'Ç','_'),'Ö','_'),'İ','_'),'G','_'),'Ü','_')
SET @SUBE_KODU = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@SUBE_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,
  KOD_1,
  KOD_2,
  KOD_3,
  KOD_4,
  KOD_5,
  DEPO_KODU,
  SUBE_KODU
FROM TBLSTSABIT 
WHERE STOK_KODU LIKE '%'+COALESCE( NULLIF( @STOK_KODU , '') , STOK_KODU ) +'%' AND  
     GRUP_KODU LIKE '%'+COALESCE( NULLIF( @GRUP_KODU , '') , GRUP_KODU ) +'%' AND
 KOD_1 LIKE '%'+COALESCE( NULLIF( @KOD_1 , '') , KOD_1 ) +'%' AND
     KOD_2 LIKE '%'+COALESCE( NULLIF( @KOD_2 , '') , KOD_2 ) +'%' AND
     KOD_3 LIKE '%'+COALESCE( NULLIF( @KOD_3 , '') , KOD_3 ) +'%' AND
     KOD_4 LIKE '%'+COALESCE( NULLIF( @KOD_4 , '') , KOD_4 ) +'%' AND
     KOD_5 LIKE '%'+COALESCE( NULLIF( @KOD_5 , '') , KOD_5 ) +'%' AND
 DEPO_KODU LIKE '%'+COALESCE( NULLIF( @DEPO_KODU , '') , DEPO_KODU ) + '%' AND
     SUBE_KODU LIKE '%'+COALESCE( NULLIF( @SUBE_KODU , '') , SUBE_KODU ) + '%'  
END
 
GO


bu şekilde çalıştırıyorum;

Kod: Tümünü seç

exec SP_EMANETTRK @GRUP_KODU ='TİBET'
Hata
Conversion failed when converting the varchar value '%' to data type smallint.

eklediğim iki alan var "@DEPO_KODU smallint = null," "@SUBE_KODU varchar(10) = null"
bu alanları varchar(15) veya nvarchar(15) olarakda denedim olmadı aynı hata.
Cevapla