DBF dosyasını ADO ile okurken Türkçe karakter sorunu hk.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

DBF dosyasını ADO ile okurken Türkçe karakter sorunu hk.

Mesaj gönderen mrmarman »

DBF dosyasını ADO ile okurken Türkçe karakter sorunu hk.

Merhabalar...

- Uzun zaman önce BDE kullanarak DBASE veritabanı üzerinde çalışmak üzere hazırlamış olduğum bir programı, Yeni Türk Lirası'na uyumlu hale getirmişken veritabanını da MSAcces'e dönüştürmek istedim. :roll:

Kod: Tümünü seç

INSERT INTO adotablosu ( ... ) SELECT ... FROM dbf_db IN 'c:\klasor' [DBase 5.0;];"
- MSAccess mdb kataloğuyla birlikte tabloları, program tarafından dinamik olarak oluşturulacaktı. Yukardaki bu basit SQL cümlesi ile de verileri direkt yeni veritabanına aktaracktım.

:!: Farkettim ki ş, ğ, ı, Ş, Ğ, İ harfleri farklı algılanıyor.

- Database Desktop'tan baktığımda DBF dosyasını oluşturduğum sıralarda Table Language'i 'ascii' ANSI olarak bırakmış olduğumu farkettim.

- DBase DBF dosyasına erişirken, BDE kullanmayıp ADOQuery ile aşağıdaki şekilde eriştiğimizi varsayarsak (sonra ben onu INSERT INTO'ya uyarlarım)

Kod: Tümünü seç

  With ADOQuery1 do
  begin
    ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'
                       +'Data Source='+ExtractFilePath(ExtractFilePath(Application.Exename))+';'
                       +'Extended Properties="dBase 5.0;";';
    SQL.Add('SELECT * FROM Ogrenci');
    Active := True;
  end;
:idea: Bu örnek aynı zamanda ADO ile DBF dosyasına bağlantının nasıl yapıldığını merak edenler için de faydalı olacaktır...

:arrow: - Sorum şu : ADOQuery ile DBase tablosuna erişirken; Türkçe Karakterleri doğru görüntüleyebilmek için CodePage adına, SQL parametrelerinde ne tip bir eklentiye ihtiyaç var ?
Resim
Resim ....Resim
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

bu tip bir sorunla bende karşılaşmıştım.

bütün kayıtları teker teker dolaşıp ilgili karakterleri replace ederek çözmüştüm.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba..

- Tüm kayıtları gezmek ortak çözüm ama replace etmeye gerek olmuyor ki, BDE ile TQuery açınca karakterler normal görünüyor.

- Bu şekilde FieldByName('xxx').Value değerlerini eşitleyip post etmek yetiyor... :idea:
Resim
Resim ....Resim
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

ben dos altında çalışan bir programın verilerini yeni bir programa aktarmaya çalıştığımda karşılaşmıştım böyle bir sorunla.

mesela ş karakterini tableda ▬ gibi gösteriyordu.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Hımm evet anladım şimdi... :)

- Haklısın DOS - Windows uyumsuzluğu için ben de bir fonksiyon hazırda sürekli tutarım... :idea:
Resim
Resim ....Resim
Cevapla