MSAccess Türkçe Sıralama sorunsalı hk.

Diğer 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:

MSAccess Türkçe Sıralama sorunsalı hk.

Mesaj gönderen mrmarman »

Herkese merhaba...

- Bir arkadaşımın bir şey dikkatini çekti cevap bulamadım. Sistemimde

Kod: Tümünü seç

MDAC	2.81.1117.0 (xpsp_sp2_rtm.040803-2158)
kurulu..

- MSAccess veritabanında Türkçe harflerle yapılan sıralama garip bir şekilde çalışıyor. İlginçtir ki daha önce dikkatimi ya çekmemişti ya da doğru çalışıyordu da sonradan böyle oldu, bilemiyorum.

- Türkçe harfler ile olmayan harfleri eşit kabul ediyor, öyle sıralıyor. Yani Ş ile S, I ile İ, O ile Ö harfleri örneği vereyim.

Kod: Tümünü seç

Sabri
Şahin
Seda
Şerife
Sevgi
Şeyma
Sezgin

Kod: Tümünü seç

İmran
Iram
İrem
İsmail

Kod: Tümünü seç

Omer
Ömer
Onder
Önder
vb. örnekler uzayıp gidiyor...

- MSAccess veritabanı olan arkadaşlar, bir kontrol edip sonucu bildirebilir mi ?

- Ayrıca çözüm üretmiş olan varsa çözümü paylaşabilir mi ? Teşekkürler.
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Başlığı "Diğer Veritabanları" kısmına taşıdım. Geçici rahatsızlık için özür :oops:
Resim
Resim ....Resim
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
msacces2000 de baktım.
sıralama türkçeye göre yapılıyor.
sadece s ve ş ile başlayan kayıtlar vardı onları karşılaştırabilldim.
sıralamayı alanadina göre yapınca bu kayıtları düzgün sıraladı.
  • SİNAN
    SÜREYYA
    ŞAHİN
    ŞEMSİNUR
şeklinde.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@aslangeri Vakit ayırdığın için teşekkürler..

- Sorun Proje içerisinden dinamik olarak create edilen veritabanı ve tablolardaymış... Şimdi böyle dinamik oluşturulan tabloların MS-Access'de create edilenlerden farkını irdeliycem.

- Bugün gündüz gözüyle MSAccess ile bir veritabanı oluşturup denemeye karar verdim MS-Access'de tablo create edince sorun yoktu.

- Aşağıdaki kodu bir button'a koyup, USES eklentilerini yapar mısın benim için. Sonra button'a basınca oluşan Veritabanı içindeki tabloya MSAccess ile bakıp oradan isim sürununa göre sıralatır mısın ?

Kod: Tümünü seç

// Uses AdoDB, ComObj, Variants
Const
  NameList : Array [0..9] of String = ('Sabri', 'Şahin', 'Seda', 'Şerife', 'Sevgi', 'Şeyma', 'Sezgin', 'Suzan', 'Şimal', 'Şevket' );
Var
  BaglantiStr: String;
  Veritabani : OleVariant;
  AdoQuery   : TAdoQuery;
  AdoCommand : TAdoCommand;
  Sayac      : Integer;
begin
  BaglantiStr:= Format( 'Provider=Microsoft.Jet.OLEDB.4.0;'
                              + 'Data Source=%s;'
                              + 'Jet OLEDB:Database Password=%s;',
                              [ ExtractFilePath(Application.ExeName)+'Veritabani.MDB', '']);

  Veritabani := CreateOleObject('ADOX.Catalog');
  Veritabani.Create( BaglantiStr );
  Veritabani := Unassigned;

  With TAdoQuery.Create(Nil) do begin
    ConnectionString := BaglantiStr;
  // Tabloyu oluşturup alanları belirliyoruz....
    AdoCommand := TAdoCommand.Create( Nil );
    AdoCommand.ConnectionString := BaglantiStr;
    AdoCommand.CommandText      := 'CREATE TABLE OrnekTablo ( KaySiraNo AutoIncrement, Adi TEXT(30) )';
    AdoCommand.Prepared := true;
    AdoCommand.Execute;
    AdoCommand.Free;

    SQL.Text  := 'SELECT * FROM OrnekTablo';
    Active    := True;
    For Sayac := 0 to High(NameList) do begin
      Append;
      FieldByName('Adi').AsString := NameList[Sayac];
      Post;
    end;
    Active   := False;
    Free;
  end;
end;
- Teşekkürler.
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Hatayı iyice localize ettim.

- Delphi ile create ettiğim veritabanı dosyası içinde MSAccess ile manuel tablo create edip, aynı listeyi içine girdim. Yine sıralama hatası yaptı.

- Sorun aşağıdaki kısımda yani veritabanı ana dosya Create olayında. Burada büyük ihtimalle Character set tanımı yapılan bir yer vardır...

Kod: Tümünü seç

  BaglantiStr:= Format( 'Provider=Microsoft.Jet.OLEDB.4.0;'
                              + 'Data Source=%s;'
                              + 'Jet OLEDB:Database Password=%s;',
                              [ ExtractFilePath(Application.ExeName)+'Veritabani.MDB', '']);

  Veritabani := CreateOleObject('ADOX.Catalog');
  Veritabani.Create( BaglantiStr );
  Veritabani := Unassigned;
Resim
Resim ....Resim
Cevapla