Delphide bir datebase tablosu oluşturdum.Bunu table nesnesiyle ilişkilendirdim ama ilişkilendirdiğim yer başka bir bilgisayar da olamayacağı için başka yere gidince çalışmıyor.Bu tabloyu kendi içindeki klasöre attım.öyle bişey yazmalıyım ki DatebaseName deki adrese nereye giderse gitsin kendi içindeki bu tabloyu bulmalalı...Bilgisi olan arkadaşlar varsa yardımcı olabilirmi biraz acilde...
Büyük ihtimal connection de problemin var, bunu halletmek için bağlantı kısmı mesela c:\abc\def\a.mdb gibi bir dosyayı gösteriyorsa, dosyayı programın yanına taşıyıp sadece a.mdb şeklinde yaparsan hallolur. O zaman sadece yanında olması yeterli olur.
getcurrentdir adlı string çıktılı komut geçerli sizi verir ama tavsiye etmem.yan bar veya başalngıç dizni faklrı bir kısayol ile çalıştırlırsa uygıulama farklı dizin veriri
bir diğeri paramstr(1) buda geçrli yolu verir extractfilename(); diyerek çıakrabilirsn
Çok sağol denedim program kilitlendi sorun bendemi acaba...
nasıl becerdin yaws. access violation mı oldu sen bu kodları önce tek başıan bir kontrol et sonra programa ekle istersen
böyle olmicak drony msn varmıydı
Senin hangi dille uğraştığını çözemedim daha :))
kullandığın VERİTABANI ve Nesne türlerini yaz sana yol gösteririm biraz .. Arkadaşların yaptıkları açıklamarla deil bu olay BDE administrator Alias larıyla ilgili...
Her dalda biraz ilerlemeye çalışıyorum :) asp,php var onlarda yaza
DefaultDD dbase for windows da tablo bunu başka bi yere taşıyınca da kullanmam gerekiyor.ama başka bir bilg. e gidince db tablo yerininde değişmesi lazım bu tabloyu kendi içine atıp yerinide orası olarak belirlemem lazım nasıl olacak çözemedim :)
bana dün gönderdiğin kod eksikti formun sadece yardım kısmı açıldı yarısını unutmuşsun. neyse resimde table kullanmışsın(onunla sadece dsn üzerinde bağlabilirsin. ve dsn ayarlarını karşı bilgisayarda yüklemk gerekir.) bence onun yerine adotable nesnesi kullan ayrıca onunlada dsn kullanabilrisn. ama tavsiyem path sistemi olacaktır. öncelikle forma adotable ,dbgrid ve datasource nesnelerini ekle ve datasource1 in dataset yazan kontrolünden adotable1 i seç. dbgrid1 inde datasource kontrolünden datasource1 i seç. sonra adotable1. den connectionstring ten gerekli ayarları yap (ayrıca dsn ayarlarınıda yükleyebilrisn buradan) sonra orada uzun bir string çıkacak sonra onu olduğu gibi kopyala; sonra bu stringi(oradaki yazı) bir widestring değişkenine ata yada direct ADOTable1.ConnectionString 'e ata
örn.
var dbpath:string;
begin dbpath:='c:\dizin\db.mdb' ADOTable1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+dbpath+';Persist Security Info=False'; ADOTable1.TableName:='mesajlar'; //tablo adı adotable1.Active:=true; end;
ayrıca örneğin. database ile program aynı dizin veya altdizininde olacak diyelim bunuda
DefaultDD dbase for windows da tablo bunu başka bi yere taşıyınca da kullanmam gerekiyor.ama başka bir bilg. e gidince db tablo yerininde değişmesi lazım bu tabloyu kendi içine atıp yerinide orası olarak belirlemem lazım nasıl olacak çözemedim :)
Demiş dikkat edersen :) Sen Access veritabanı ile ado bağlantısını anlatmışsın :)
Tek yapman gereken Form üzerine bir TDATABASE nesnesi koymak :) BDE aliasları dışardan yönetme kabiliyetine sahip bir program biz bunu database nesnesi ile programa aldık mı tamam olay hepsi bu !! TTable nesnesi ve TDatasource nesnelerinde database türü farketmez.
örn.: Databse1 -> nesne özellikler drivername -> standart seçili olacak (Dbase içinde olur) Databasename -> Salla mesela Green :) Aliasname -> dokunma boş kalsın :)
daha sonra delphi içinde yeni bir alias oluşmuş olacaktır !. databaseini program dizinine aç ve Table1 in Table Name özelliğine (databaseismi.uzantı) yaz dizin vermeden ! Biraz uğraş eğer yapamassan sana çok basit bir şey hazırlar webe yüklerim bu başlangıç olsun. Programı taşırken dikkat etmen gerekenlerde sonraki konu olsun.
Burada ki daha önceden yazdığım küçük örneği inceleyerek daha iyi fikir sahibi olabilirsin.
Ek olarak..: Delphide yazılmış veritabanı programlarının hemen hemen tamamı BDE administrator programına ve program altında yerleşik DLL dosyalarına ihtiyaç duyarlar.Eğer anlattığm şekilde TDatabase dosyasını projene eklersen bu sadece programının BDE de configure ettiğin ALIAS sorununu devre dışı bırakır. Yani TDATABASE sayesinde program kendi aliasını kendi üreterek BDE den kaynaklanan yavaşlama ve Run sorunlarının önüne geçilir!.
Bununla birlikte local table dosyaları ile Nesnel olarak bağlantı sağlıyorsan BDE'yi her halükarda diğer bilgisayara taşımalısın!. Eğer diğer bilgisayarda delphi kullanmıyorsan Borland installshield ile basit bir installshield hazırla ve BDE sistem gerekliliklerinde Merge modul olarak ekle. Installshield olarak BDE yi sisteme gerekli ayarları ile birlikte taşımazsan projen çalışsa bile bazı hatalar oluşur. Niye peki ?
Bde içerisindeki DLL dosyalarında bulunan bağlantı fornksiyonları ve argumanlar delphi ile gelen Data Objeleri ile ilişkilidir.Yani objeler database e BDE üzerinden erişir LOCAL projeler genelde böyledir.
Uzun lafın kısası Karşı sistemde BDE olmalı (paradox,Dbase,Vdbase) gibi veritabanları için mecbur. Interbase yada SQL server gibi gelişmiş veritabanlarının zaten kendi altyapıları var ve BDE'yi sadece kopyalarsanda olmaz ! Karşı sisteme installshield kullanarak aktarmanı yada delphi setup'ından yükleme yapmanı öneririm.
Birde unutmadan daima data bağlantıları yaptığın Form ve objeleri Application da ilk Create Yap!
:) BDE olmadan LOCAL bir DBase veritabanı uygulamasını karşı bilgisayarda çalıştıramazsın :) bunun için programı yazdığın makinede basit bir installshield hazırlamasın BDE ekleyerek yada BDE delphi CD sinden kurmalısın!
:) BDE olmadan LOCAL bir DBase veritabanı uygulamasını karşı bilgisayarda çalıştıramazsın :) bunun için programı yazdığın makinede basit bir installshield hazırlamasın BDE ekleyerek yada BDE delphi CD sinden kurmalısın!
quote:
Orjinalden alıntı: Greenleaf
Hayır
peki BDE yi delphi den nasıl parçalayıp onun içine aktarcam ?
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
bir diğeri paramstr(1) buda geçrli yolu verir extractfilename(); diyerek çıakrabilirsn
ama sana şunu tavsiye ederim
ExtractFilePath(pansichar(Application.exename))
Bu mesaja 1 cevap geldi. Cevapları Gizle
Alias yanlış diyor hala...
< Bu mesaj bu kişi tarafından değiştirildi Greenleaf -- 21 Mayıs 2005, 19:57:33 >
Bu mesaja 1 cevap geldi. Cevapları Gizle
nasıl becerdin yaws. access violation mı oldu sen bu kodları önce tek başıan bir kontrol et sonra programa ekle istersen
Bu mesaja 1 cevap geldi. Cevapları Gizle
böyle olmicak drony msn varmıydı
Bu mesaja 1 cevap geldi. Cevapları Gizle
Senin hangi dille uğraştığını çözemedim daha :))
kullandığın VERİTABANI ve Nesne türlerini yaz
sana yol gösteririm biraz ..
Arkadaşların yaptıkları açıklamarla deil bu olay BDE administrator Alias larıyla ilgili...
Bu mesaja 1 cevap geldi. Cevapları Gizle
DefaultDD
dbase for windows da tablo bunu başka bi yere taşıyınca da kullanmam gerekiyor.ama başka bir bilg. e gidince db tablo yerininde değişmesi lazım bu tabloyu kendi içine atıp yerinide orası olarak belirlemem lazım nasıl olacak çözemedim :)
Bu mesaja 1 cevap geldi. Cevapları Gizle
bana dün gönderdiğin kod eksikti formun sadece yardım kısmı açıldı yarısını unutmuşsun.
neyse resimde table kullanmışsın(onunla sadece dsn üzerinde bağlabilirsin. ve dsn ayarlarını karşı bilgisayarda yüklemk gerekir.) bence onun yerine adotable nesnesi kullan ayrıca onunlada dsn kullanabilrisn. ama tavsiyem path sistemi olacaktır.
öncelikle forma adotable ,dbgrid ve datasource nesnelerini ekle
ve datasource1 in dataset yazan kontrolünden adotable1 i seç.
dbgrid1 inde datasource kontrolünden datasource1 i seç.
sonra adotable1. den connectionstring ten gerekli ayarları yap (ayrıca dsn ayarlarınıda yükleyebilrisn buradan) sonra orada uzun bir string çıkacak sonra onu olduğu gibi kopyala;
sonra bu stringi(oradaki yazı) bir widestring değişkenine ata yada direct ADOTable1.ConnectionString 'e ata
örn.
var
dbpath:string;
begin
dbpath:='c:\dizin\db.mdb'
ADOTable1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+dbpath+';Persist Security Info=False';
ADOTable1.TableName:='mesajlar'; //tablo adı
adotable1.Active:=true;
end;
ayrıca örneğin. database ile program aynı dizin veya altdizininde olacak diyelim bunuda
dbpath:=ExtractFilepath(Application.Exename)+'\db.mdb';
şeklinde tanıtabilirsin.
sonra adotable1 den tablename ve field den istediğin tablo ve alanları seç. ve active et bu kadar
Bu mesaja 2 cevap geldi. Cevapları Gizle
Arkadaş :
Demiş dikkat edersen :) Sen Access veritabanı ile ado bağlantısını anlatmışsın :)
Tek yapman gereken Form üzerine bir TDATABASE nesnesi koymak :) BDE aliasları dışardan yönetme kabiliyetine sahip bir program biz bunu database nesnesi ile programa aldık mı tamam olay hepsi bu !!
TTable nesnesi ve TDatasource nesnelerinde database türü farketmez.
örn.:
Databse1 -> nesne
özellikler
drivername -> standart seçili olacak (Dbase içinde olur)
Databasename -> Salla mesela Green :)
Aliasname -> dokunma boş kalsın :)
daha sonra delphi içinde yeni bir alias oluşmuş olacaktır !.
databaseini program dizinine aç ve Table1 in Table Name özelliğine (databaseismi.uzantı) yaz dizin vermeden ! Biraz uğraş eğer yapamassan sana çok basit bir şey hazırlar webe yüklerim bu başlangıç olsun. Programı taşırken dikkat etmen gerekenlerde sonraki konu olsun.
Kolay gelsin...
Bu mesaja 1 cevap geldi. Cevapları Gizle
söylediğin tüm şeyleri yaptım eminim doğru olduğuna da ama başka bilgisayar da çalıştırınca bu hatayı veriyor.
Bu mesaja 1 cevap geldi. Cevapları Gizle
Burada ki daha önceden yazdığım küçük örneği inceleyerek daha iyi fikir sahibi olabilirsin.
Ek olarak..: Delphide yazılmış veritabanı programlarının hemen hemen tamamı BDE administrator programına ve program altında yerleşik DLL dosyalarına ihtiyaç duyarlar.Eğer anlattığm şekilde TDatabase dosyasını projene eklersen bu sadece programının BDE de configure ettiğin ALIAS sorununu devre dışı bırakır. Yani TDATABASE sayesinde program kendi aliasını kendi üreterek BDE den kaynaklanan yavaşlama ve Run sorunlarının önüne geçilir!.
Bununla birlikte local table dosyaları ile Nesnel olarak bağlantı sağlıyorsan BDE'yi her halükarda diğer bilgisayara taşımalısın!. Eğer diğer bilgisayarda delphi kullanmıyorsan Borland installshield ile basit bir installshield hazırla ve BDE sistem gerekliliklerinde Merge modul olarak ekle. Installshield olarak BDE yi sisteme gerekli ayarları ile birlikte taşımazsan projen çalışsa bile bazı hatalar oluşur. Niye peki ?
Bde içerisindeki DLL dosyalarında bulunan bağlantı fornksiyonları ve argumanlar delphi ile gelen Data Objeleri ile ilişkilidir.Yani objeler database e BDE üzerinden erişir LOCAL projeler genelde böyledir.
Uzun lafın kısası Karşı sistemde BDE olmalı (paradox,Dbase,Vdbase) gibi veritabanları için mecbur. Interbase yada SQL server gibi gelişmiş veritabanlarının zaten kendi altyapıları var ve BDE'yi sadece kopyalarsanda olmaz ! Karşı sisteme installshield kullanarak aktarmanı yada delphi setup'ından yükleme yapmanı öneririm.
Birde unutmadan daima data bağlantıları yaptığın Form ve objeleri Application da ilk Create Yap!
HATA NEDENİ..: BDE
Kolay gelsin...
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
O kısım önemli deil de Yahu 5 paragraf açıklama yaptım
Açmaya çalıştığın bilgisayarda BDE kurulumu ??? BDE -> Borland Database Engine
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 2 cevap geldi. Cevapları Gizle
BDE olmadan LOCAL bir DBase veritabanı uygulamasını karşı bilgisayarda çalıştıramazsın :) bunun için programı yazdığın makinede basit bir installshield hazırlamasın BDE ekleyerek yada BDE delphi CD sinden kurmalısın!
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
peki BDE yi delphi den nasıl parçalayıp onun içine aktarcam ?