Konu: database (.dbc ) uzantılı dosyayı birden fazla programda kullanmak ???
CREATE DATABASE lcLovPath+"\"+lcTable
Open DATABASE lcLovPath+"\"+lcTable SHARED
olarak açsamda 1705 - File access is denied ' lcLovPath+"\"+lcTable' hatası alıyorum.
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
CREATE DATABASE lcLovPath+"\"+lcTable
Open DATABASE lcLovPath+"\"+lcTable SHARED
olarak açsamda 1705 - File access is denied ' lcLovPath+"\"+lcTable' hatası alıyorum.
ben pek .dbf tabloları için vfp database kullanmam ama create den sonra database zaten exclusive olarak açık oluyor. tekrar open yapabilmek için önce kapatmanız lazım.
ama bu dbc içindeki dbf dosyası kullanılıyor baska bir programda kapatınca da olmuyor malesef ya da ben yapamıyorum
demek istediğim buydu:
CREATE DATABASE lcLovPath+"\"+lcTable
clos data
Open DATABASE lcLovPath+"\"+lcTable SHARED
Database bir kere yaratilan birsey. Runtime'da yaratacak iseniz (olabilir view icin filan) o zaman gecici isim kullanin. Ornegin:
LOCAL lcDatabase, lcTable
lcDatabase = FORCEEXT( GetTempFileName(), 'DBC' )
CREATE DATABASE (m.lcDatabase)
** bu database ile yapilacak isler ...
SET DATABASE TO (m.lcDatabase)
CLOSE DATABASES
PROCEDURE GetTempFileName
** Thanks to Martin Krivka for the idea
Return ;
Forcepath("T"+;
LTRIM(Str(_vfp.ProcessID))+'_'+;
LTRIM(Str(_vfp.ThreadID))+;
Sys(2015)+".tmp",Sys(2023))
endproc
Aslında benim yapmaya çalışıtığım şu. Veritabanımdan günlük bir tablodaki verileri cekip , ama günde bir kez cekip dbf te tutmak.İşlemleri mi de bu dbf üzerinden yapmak. Bir pogram açılıdğında sıkıntı yok. Ama 1 program acıkken başka bir program açtıgımda
IF !FILE(lcLovPath+"\"+lcTable+ ".dbc") then
CREATE DATABASE lcLovPath+"\"+lcTable
ENDIF
Open DATABASE lcLovPath+"\"+lcTable SHARED
open database satırında file acces is denied hatası alıyorum.
söylediğim gibi işte:
IF !FILE(lcLovPath+"\"+lcTable+ ".dbc") then
CREATE DATABASE lcLovPath+"\"+lcTable
clos data
ENDIF
Open DATABASE lcLovPath+"\"+lcTable SHARED
Iyi de benim anlamadigim yeni database yaratmaya ne gerek var? Zaten database'in yok mu. Onun bir kopyesini tek bir kez al ve lokal bir dizinde tut. Geriye sadece ayni dizine datayi alman kalir.
Ben zaten bir kez olusturuyorum database i. dbc dosyası da var belirlediğim klasorde. birde dbf dosyası var.ilk açtığım programda dbf dosyasını acabiliyorum sıkıntısız. 2.programı acıyorum dbc dosyası içindeki dbf e erişmem için database e erişmek gerekmiyormu.Databesi acıp dbf dosyasını acmam gerekiyor. 2.programda da open diyemiyorum işte.
Olay karisiyor:)
Her data session'ina girerken birtakim "set" komutlarini kurdugun yer vardir. Oraya:
set exclusive off
ekle. O olunca "shared" filan kullanman da gerekmeyecek. Tersine exclusive kullanman gerekiyorsa onu belirtirsin.
Database'i acman gerekmiyor. Database zaten sen istemesen de acilir. Yani:
use (_samples+'data\customer')
dediginde, ilgili Testdata.dbc otomatikman acilir. "Create Database" gereksiz ve ben neden ihtiyacin oldugunu anlamis degilim.