sql 2005 türkçe karakter sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
gacalsoft
Üye
Mesajlar: 10
Kayıt: 16 Eki 2005 10:54
Konum: Tekirdağ
İletişim:

sql 2005 türkçe karakter sorunu

Mesaj gönderen gacalsoft »

merhaba arkadaşlar
network üzerinde netsis adında bir muhasebe programı kullanılıyor ve ben buna entegre bi program yazmak istiyorum
db oluşturulurken callation SQL_Latin1_General_CP1_CI_AS olarak seçilmiş
ve haliyle ben delphi ile bağlandığımda (ADO) türkçe karakter sorunu yaşıyorum.
ado connection nesnesinde ki auto translate=false yapıyorum görünüm olarak sorun kalmıyor
fakat sorgularıda (İ,Ş,Ö..vb) türkçe karakterlerde sorun var

yardımcı olursanız sevinirim

iyi çalışmalar
saygılarımla
Deniz UZUN
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7587
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Ben auto translate'i yazacaktım ama onu zaten denemişsiniz.

Sanırım collation'ı değiştirmek en güzeli. DB'yi backup - restore ile olması lazım. Maalesef database'i yeniden oluşturmadan collation değiştiremiyorsunuz.

Kolay gelsin.
Kullanıcı avatarı
gacalsoft
Üye
Mesajlar: 10
Kayıt: 16 Eki 2005 10:54
Konum: Tekirdağ
İletişim:

Mesaj gönderen gacalsoft »

kullandığımız sistem NETSİS
veritabanlarını kendi oluşturuyor ve nasıl yapıyorsa collation kısmını kilitliyor yani değiştirsem bile bir dünya hata veriyor ve değiştirme iptal oluyor

şimdi ben bu veritabanına başka bir şekilde bağlansam nasıl olur

tavsiye eder misiniz?
saygılarımla
Deniz UZUN
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Sorgularda bir fonksiyon yazarak, Türkçe karakterleri değiştirip sorguyu o şekilde oluşturabilirsin veya netopen_x var netsisin onu bir incele
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
ovural
Üye
Mesajlar: 167
Kayıt: 22 Eki 2003 10:20
İletişim:

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ovural »

bilmiyorum sorununu çözdünmü ama SQL cümlelerini yazarken sabit SQL yazmak yerine parametre kullan ..

Kod: Tümünü seç

AdoQuery1.SQL.Text := 'select * from tablo where alan=''İZMİR''';
kodunda sana sonuç dönmezken

Kod: Tümünü seç

AdoQuery1.SQL.Text := 'select * from tablo where alan=:ad';
AdoQuery1.Parameters[0].Value:='İZMİR';
kodunu kullanırsan sonuç dönecektir ..
Kim ilim öğrenir sonra da onu gizlerse âhirette onun ağzına ateşten bir gem vurulur. (Hadis-i Şerif)
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen sabanakman »

ConnectionString ayarlanırken AutoTranslate özelliği varsayılan olarak True olmaktadır. Bu False yapıldığında sorun düzelecektir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Nemesis2005
Üye
Mesajlar: 136
Kayıt: 18 Oca 2005 05:24
Konum: İzmir

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen Nemesis2005 »

Benimde başıma aynı sorun geldi.
Parametrede göndermek türkçe karakterlerdeki problemi çözmüyor.
ben şöyle bir çözüm buldum .

Kod: Tümünü seç

function WinToSQL(s: String): String;
const
  win: string = 'ŞşİıĞğ';
  SQL: string = 'ÞþÝýÐð';
var
  j: byte;
begin
  for j := 1 to length(win) do
    while pos(win[j], s) > 0 do
      s[pos(win[j], s)] := SQL[j];
  result := s;
end;
kullanımıda şöyle

Kod: Tümünü seç

winToSQL('DİŞLİ');
Her iyinin içinde bir Kötülük.Her Kötnün içide de bir iyilik vardır
muratsert
Üye
Mesajlar: 8
Kayıt: 16 Tem 2005 10:33

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen muratsert »

bende uzun zamandır bu konudan muzdarip idim devart ve devexpress bileşenleri çalışıyordum bu sorunu aşmak için auto translate i false yapmanın yanısıra devexpress bileşeninin font özelliklerinde charset özelliğini 'TURKISH_CHARSET' yaparsanız filtrelemede de sorun yaşanmadan problem çözülmüş olur.
Kader Beyaz kağıda sütle yazılmış yazı
Elindeyse Beyazdan gel de ayır Beyazı
esrehmaan

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen esrehmaan »

Connection’ın Properties kısmına veritabanında kullandığınız codepage yazmak mesela iyi bir çözüm olur;

codepage=utf8
veya
codepage=latin5
veya
codepage=PXW_TURK
....

birebir aynı olmaz ise sorun yaşamaya devam edersiniz...

sizin ki ise;
codepage=SQL_Latin1_General_CP1_CI_AS

yazmanız yeterli oalcaktır.... kolay gelsin sorun bu şekil çok kolay şekilde çözülecektir...
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 araştırma yaparken burayı buldum ve bende Netsis veri tabanına sorgu yazıyorum Türkçe karakterde benimde başımda, yukarıdaki yazılanların hepsini yapmama rağmen ben sorunumu çözemedim.
ilk önce bağlandığım veri tabanımın auto translate olayını false yaptım olmadı sonra function yazmışsınız onu kullandım olmadı
TBLSTSABIT deki Grup Kodu nu kullanıyorum Grup_Kodu='TİBET'

Kod: Tümünü seç

function WinToSQL(s: String): String;
const
  win: string = 'ŞşİıĞğ';
  SQL: string = 'ÞþÝýÐð';
var
  j: byte;
begin
  for j := 1 to length(win) do
    while pos(win[j], s) > 0 do
      s[pos(win[j], s)] := SQL[j];
  result := s;
end;
function bu ve kullanımı da ;

Kod: Tümünü seç

             '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='+#39+''+WinToSQL(Edit9.Text)+''+#39+' AND A.STHAR_FTIRSIP=''2'' '+
             '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';
ensonda bunu ekledim ama olmadı

Kod: Tümünü seç

Auto Translate=False;codepage=SQL_Latin1_General_CP1_CI_AS
Yardımcı olur musunuz?
Kullanıcı avatarı
warder
Üye
Mesajlar: 255
Kayıt: 10 Mar 2004 04:59

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen warder »

Aslında sistem default encoding ile başınız belada.
Ne yazarsanız yazın açıkça deklare etmediğiniz her durumda default encoding devreye girer ve karakterlerinizi kodlar.
Muhtemel sisteminizi ANSI -> 1254, yukardaki kodlarınızdan anlaşılan (SQL: string = 'ÞþÝýÐð';) varmak istediğiniz encoding latin1-> 1252
Kullandığınız text içeriklerinde kodlar ascii 127 üzerine çıktığınızda encoding farklılıkları kendini göstermeye başlayacaktır.
Bu durum bize (programcılara) ascii 127 altında tanımlanamamış karakterlerde kullanım zorluğu (nispeten) olarak dönecektir.
Bence konunun bu kısmına bir odaklanın...
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

Re: sql 2005 türkçe karakter sorunu

Mesaj gönderen ozcank »

Bun da hata veriyor 'TEncoding;' D7 olduğu için mi acaba ?

Kod: Tümünü seç

procedure TForm14.BitBtn1Click(Sender: TObject);
Var Path: String;
  myEncoding : TEncoding;
begin
  Path:= Edit9.Text;
  myEncoding := TEncoding.Default;
  if (Edit9.Text = 'ASCII') then myEncoding := TEncoding.ASCII;
  if (Edit9.Text = 'BigEndianUnicode') then myEncoding := TEncoding.BigEndianUnicode;
  if (Edit9.Text = 'Default') then myEncoding := TEncoding.Default;
  if (Edit9.Text = 'Unicode') then myEncoding := TEncoding.Unicode;
  if (Edit9.Text = 'UTF8') then myEncoding := TEncoding.UTF8;
  Memo1.Lines.SaveToFile(Path, myEncoding);
end;




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 »

Netsis SQLServer kullanmıyor mu ? Unicode desteğini devreye sokmak için şunu dener misiniz ?

Tırnak işaretinin önüne bir tan büyük harf (N) koyun. Ben SQLServer sorgularımda bunu eksik etmem. :idea:

Kod: Tümünü seç

select .... where Grup_Kodu = N'TİBET' 

Kod: Tümünü seç

select .... where Grup_Kodu like N'%TİBET%'
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 »

Evet SQL kullanıyor mrmarman kardeşim ama ben bu şekilde kullanıyorum ;

Kod: Tümünü seç

D.GRUP_KODU='+#39+''+Edit9.Text+''+#39+'
GRUP_KODU='TİBET' olarak denedim yine filtre etmedi :(

'N' işareti NetOpenX için mi? ben kullanamadım direkt TBLSTSABIT tablosundan çekiyorum.
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 »

(N) UNICODE için.

şu şekilde deneyin.

Kod: Tümünü seç

D.GRUP_KODU=N'+#39+''+Edit9.Text+''+#39+'
Resim
Resim ....Resim
Cevapla