| mepc | 26.09.2003 - 11:55:41 |
| Merhabalar Acces ten paradox a geçiş yaptım.
"like" ile sorgulama yaparken acceste karşılaşmadığım iki sorunla karşılaşıyorum. Birincisi metin alanlarında like ile sorgu yaparken büyük küçük harf ayrımı yapıyor. Bunu nasıl engellerim. İkincisi memo alanlarda like ile sorgu yapınca sonuçta hep sıfır kayıt geliyor. Memo alanlarda like ile nasıl sorgu yapabilirim? Kullandığım veritabanı Paradox for Windows | |
| Kuri_YJ | 01.10.2003 - 16:55:44 |
| Merhaba,
Bildiğim ve denediğim kadarı ile paradox'ta Memo field'lar için LIKE kullanımı sözkonusu değil. Bunun yerine farklı bir metod uygulayıp yapabilirsin. Memo Field'ı kelimlere parçalayıp bir yardımcı table'a sıra ile bu memofielddaki kelimleri Insert edersin ve her insert ettiğin kelimenin hangi record'taki memofielddan alındığını belirtmek için bir Key alan tutarsın. Örneğin, TABLO1 Tablo1.MakaleID AUTOINC Tablo1.MakaleAdi ALPHA 30 Tablo1.MakaleYazari ALPHA 25 Tablo1.Makale MEMO 10 TABLO2 Tablo2.Tablo1MakaleID INTEGER Tablo2.Kelime ALPHA 30 şeklinde tablo yapılarını oluştur. MemoField'ın içinde geçen her kelimeyi tek tek TABLO2'ye insert et ve arama yapılırken, eğer arama MemoField üzerinde olacaksa, sen dönüp tablo2'de aramanı gerçekleştir. Uyarı : Like kullanımı ağır olur (Paradox için) Ayrıca Türkçe Karakterlerde arama yaparken Küçük/Büyük Harf ayrımı yapacaksan nazaran daha hızlı olur ama yapmayacaksan hepsini Büyük harfe çevirip yazman gerekir aks takdirde UPPER() komutunu kullanırsın, bunu da kullandığında bu da ekstra bir yavaşlama getirir. Kayıt sayısı çok ise (onbinlerle ifade ediliyorsa,) paradoxtan vazgeç bu iş için uygun değil !... Verimli olmaz başka bir DB seç ve özellikle SQL Based bir DB olsun FireBird veya Interbase gibi. : Kolay Gelsin | |
| mussimsek | 02.10.2003 - 00:16:06 |
Memo Field'ı kelimlere parçalayıp bir yardımcı table'a sıra ile bu memofielddaki kelimleri Insert edersin ve her insert ettiğin kelimenin hangi record'taki memofielddan alındığını belirtmek için bir Key alan tutarsın.
Merhaba, bu çok kullanılan bir teknik. Daha önce 2-3 programın bu şekilde kullandığını gördüm ama ne diye bütün kelimeleri bir tabloya kaydetmişler şaşırmıştım. Kuri_TLJ toplantıda anlatınca çaktım olayı. Kolay gelsin. | |
| mepc | 03.10.2003 - 18:23:30 |
| yardımlarınız için teşekkür ederim.
veritabanını değiştirmemi yazmışsınız. paradoxu tercih etmemin sebebi kurulum programı hazırlamadan bir kaç dosyayı programı kuracağım bilgisayara kopyalayınca çalışabilmesi. İnterbase içinde böyle bir imkan varmı acaba? | |
| mussimsek | 03.10.2003 - 22:46:23 |
veritabanını değiştirmemi yazmışsınız. paradoxu tercih etmemin sebebi kurulum programı hazırlamadan bir kaç dosyayı programı kuracağım bilgisayara kopyalayınca çalışabilmesi.
İnterbase içinde böyle bir imkan varmı acaba? Merhaba, bu doğru değil maalesef. Paradox'u bir bilgisayarda çalıştırmak için BDE'nin yüklü olması gerekir. Buda 6-7 MB civarında ek bir yük demek oluyor. Interbase/Firebird içinde Interbase/Firebird'ün kurulu olması gerekir. Kurulu ise veritabanı sadece .gdb uzantılı tek bir dosyada tutulmaktadır. Kolay gelsin. | |
| mepc | 01.04.2004 - 20:30:33 |
| forumu karıştırıken dikkatimi çekti, eski bir mevzuu ama yinede faydalı olabilir
ben kullanıyorum ve her bilgisayarda çalışıyor gerekli dosyalar şunlar (exe ile aynı dizinde olacak) bantam.dll blw32.dll ceeurope.btl charset.cvb europe.btl idapi32.dll idasci32.dll idbat32.dll iddr32.dll idpdx32.dll idr200009.dll idsql32.dll other.btl usa.btl | |
| mege | 02.04.2004 - 09:11:21 |
| selam
programlama forumunda bu konu halen tartışılmakta ve memolarda like kullanılabiliyormuş. problem formatted MEmo type(F)'da kaynaklanıyor. Memo field(M)'da problem yok :) (bkz: http://www.delphiturkiye.com/forum/viewtopic.php?t=2294&start=0 ) | |
| rsimsek | 02.04.2004 - 09:21:44 |
| Bunlara ek olarak registery de de bazı değişiklikler gerekiyor.
Eskiden kullandığım EXE içinden BDE yi kuran bir kısmı gönderiyorum DataModule de; procedure TDM.BDE_Set(xDir: string);
begin // xdir := BDE File`larının bulundugu directory. /// BRegistry := TRegistry.Create; /// BRegistry.RootKey := DBRoot; /// BRegistry.LazyWrite := False; BRegistry.CreateKey(xKey + '\BLW32'); BRegistry.CreateKey(xKey + '\Database Engine\Settings\DRIVERS\DBASE\INIT'); BRegistry.CreateKey(xKey + '\Database Engine\Settings\DRIVERS\DBASE\TABLE CREATE'); BRegistry.CreateKey(xKey + '\Database Engine\Settings\DRIVERS\PARADOX\INIT'); BRegistry.CreateKey(xKey + '\Database Engine\Settings\DRIVERS\PARADOX\TABLE CREATE'); BRegistry.CreateKey(xKey + '\Database Engine\Settings\SYSTEM\FORMATS\DATE'); BRegistry.CreateKey(xKey + '\Database Engine\Settings\SYSTEM\FORMATS\NUMBER'); BRegistry.CreateKey(xKey + '\Database Engine\Settings\SYSTEM\FORMATS\TIME'); BRegistry.CreateKey(xKey + '\Database Engine\Settings\SYSTEM\INIT'); //-------------------------------------------------------------------------------------- BRegistry.OpenKey(xKey + '\BLW32', False); BRegistry.WriteString('BLAPIPATH', xDir); BRegistry.WriteString('LOCALE_LIB1', xDir + '\USA.BLL'); BRegistry.WriteString('LOCALE_LIB2', xDir + '\EUROPE.BLL'); BRegistry.WriteString('LOCALE_LIB3', xDir + '\OTHER.BLL'); BRegistry.WriteString('LOCALE_LIB4', xDir + '\CHARSET.BLL'); BRegistry.WriteString('LOCALE_LIB5', xDir + '\CEEUROPE.BLL'); // idapi32.dll, idpdx32.dll, blw32.dll, charset.cvb, bantam.dll, // ceeurope.btl, idr20009.dll BRegistry.CloseKey; //-------------------------------------------------------------------------------------- BRegistry.OpenKey(xKey + '\Database Engine', False); BRegistry.WriteString('CONFIGFILE01', xDir + '\IDAPI32.CFG'); BRegistry.WriteString('DLLPATH', xDir); BRegistry.WriteString('RESOURCE', '0009'); BRegistry.WriteString('SaveConfig', 'WIN32'); BRegistry.WriteString('UseCount', '1'); BRegistry.CloseKey; //-------------------------------------------------------------------------------------- BRegistry.OpenKey(xKey + '\Database Engine\Settings\DRIVERS\DBASE\INIT', False); BRegistry.WriteString('LANGDRIVER', 'DB857TR0'); BRegistry.WriteString('TYPE', 'FILE'); BRegistry.WriteString('VERSION', '4.0'); BRegistry.CloseKey; //-------------------------------------------------------------------------------------- BRegistry.OpenKey(xKey + '\Database Engine\Settings\DRIVERS\DBASE\TABLE CREATE', False); BRegistry.WriteString('LEVEL', '5'); BRegistry.WriteString('MDX BLOCK SIZE', '1024'); BRegistry.WriteString('MEMO FILE BLOCK SIZE', '1024'); BRegistry.CloseKey; //-------------------------------------------------------------------------------------- BRegistry.OpenKey(xKey + '\Database Engine\Settings\DRIVERS\PARADOX\INIT', False); BRegistry.WriteString('LANGDRIVER', 'TURK'); BRegistry.WriteString('TYPE', 'FILE'); BRegistry.WriteString('VERSION', '4.0'); BRegistry.CloseKey; //-------------------------------------------------------------------------------------- BRegistry.OpenKey(xKey + '\Database Engine\Settings\DRIVERS\PARADOX\TABLE CREATE', False); BRegistry.WriteString('BLOCK SIZE', '2048'); BRegistry.WriteString('FILE FACTOR', '95'); BRegistry.WriteString('LEVEL', '4'); BRegistry.WriteString('STRICTINTEGRTY', 'TRUE'); BRegistry.CloseKey; //-------------------------------------------------------------------------------------- BRegistry.OpenKey(xKey + '\Database Engine\Settings\SYSTEM\FORMATS\DATE', False); BRegistry.WriteString('FOURDIGITYEAR', 'FALSE'); BRegistry.WriteString('LEADINGZEROD', 'FALSE'); BRegistry.WriteString('LEADINGZEROM', 'FALSE'); BRegistry.WriteString('MODE', '0'); BRegistry.WriteString('SEPARATOR', '/'); BRegistry.WriteString('YEARBIASED', 'TRUE'); BRegistry.CloseKey; //-------------------------------------------------------------------------------------- BRegistry.OpenKey(xKey + '\Database Engine\Settings\SYSTEM\FORMATS\NUMBER', False); BRegistry.WriteString('DECIMALDIGITS', '2'); BRegistry.WriteString('DECIMALSEPARATOR', '.'); BRegistry.WriteString('LEADINGZERON', 'TRUE'); BRegistry.WriteString('THOUSANDSEPARATOR', ','); BRegistry.CloseKey; //-------------------------------------------------------------------------------------- BRegistry.OpenKey(xKey + '\Database Engine\Settings\SYSTEM\FORMATS\TIME', False); BRegistry.WriteString('AMSTRING', 'AM'); BRegistry.WriteString('MILSECONDS', 'FALSE'); BRegistry.WriteString('PMSTRING', 'PM'); BRegistry.WriteString('SECONDS', 'TRUE'); BRegistry.WriteString('TWELVEHOUR', 'TRUE'); BRegistry.CloseKey; //-------------------------------------------------------------------------------------- BRegistry.OpenKey(xKey + '\Database Engine\Settings\SYSTEM\INIT', False); BRegistry.WriteString('AUTO ODBC', 'FALSE'); BRegistry.WriteString('DATA REPOSITORY', 'Borland Data Dictionary'); BRegistry.WriteString('DEFAULT DRIVER', 'DBASE'); BRegistry.WriteString('LANGDRIVER', 'DB857TR0'); BRegistry.WriteString('LOCAL SHARE', 'FALSE'); BRegistry.WriteString('LOW MEMORY USAGE LIMIT', '32'); BRegistry.WriteString('MAXBUFSIZE', '2048'); BRegistry.WriteString('MAXFILEHANDLES', '48'); BRegistry.WriteString('MINBUFSIZE', '128'); BRegistry.WriteString('SHAREDMEMLOCATION', ''); BRegistry.WriteString('SHAREDMEMSIZE', '2048'); BRegistry.WriteString('SQLQRYMODE', ''); BRegistry.WriteString('SYSFLAGS', '0'); BRegistry.WriteString('VERSION', '4.0'); BRegistry.CloseKey; Application.MessageBox('BDE Yüklendi. Programa yeniden girin', 'Bilgi', mb_IconInformation + mb_OK); // Application.Terminate; end; OnCreate ı de; procedure TDM.DMCreate(Sender: TObject);
var xDir: string; bKeyBak: boolean; begin try Database1.Connected := False; except end; BRegistry := TRegistry.Create; BRegistry.RootKey := HKEY_LOCAL_MACHINE; BRegistry.LazyWrite := False; xDir := ExtractFilePath(Application.ExeName); if xDir[length(xDir)] = '\' then xDir := copy(xDir, 1, length(xDir) - 1); bKeyBak := BRegistry.OpenKey(xKey + '\BLW32', False); // BRegistry.CloseKey; // BRegistry.Free; if not bKeyBak then begin if FileExists(xDir + '\IDAPI32.DLL') then begin if Application.MessageBox('BDE Yüklenecek', 'Soru', mb_IconQuestion + mb_YesNo + mb_DefButton1) = idYes then BDE_Set(fmBelgeKay.BKKDir) else begin Application.MessageBox('İşlem iptal edildi.!.', 'Uyarı', mb_IconExclamation + mb_Ok); Halt; end end else begin Application.MessageBox('BDE dosyaları bulunamadı.!.', 'Uyarı', mb_IconStop + mb_Ok); Halt; end; end; if Database1.Connected then Database1.Connected := False; Database1.Params[0] := 'PATH=' + fmBelgeKay.BKKDir; Database1.Connected := True; if not FileExists('Renkler.db') then with Renkler do begin TableType := ttParadox; with FieldDefs do begin Clear; Add('RenkKodu', ftInteger, 0, False); Add('RenkAdi', ftString, 20, False); end; with IndexDefs do begin Clear; Add('', 'RenkKodu', [ixPrimary]); end; CreateTable; end; if not FileExists('Renkler.px') then with Renkler do begin Exclusive := True; Open; AddIndex('', 'RenkKodu', [ixPrimary]); end; if not Renkler.Active then Renkler.Open; end; kolay gelsin. | |