Hai mas galuh, gimana dah ketemu blom solusinya.

Sebetulnya bagus juga sih pake trik App.path tapi sayang metode ini
hanya bisa digunakan untuk local database saja dan kita databasenya
menjadi statis.
Gimana klo databasenya ada di komputer lain yang terkoneksi kedalam
jaringan ?

Coba pake SaveSetting untuk menyimpan lokasi databasenya kedalam
registry sehingga kita dapat mengambil database dimanapun lokasi
database tersebut berada.
dan untuk mengambil kembali lokasi database yang tersimpan dalam
registry gunakan GetSetting.

Untuk mengambil database bisa menggunakan object commponent
CommonDialog, atau dengan menggunakan fungsi API.
dalam Sample code ini saya menggunakan fungsi API karena dengan
menggunakan fungsi API kita dapat langsung berkomunikasi dengan system
sehingga waktu proses menjadi lebih singkat.

ini sample codenya

Option Explicit

'Constant Flag untuk Dialog box
Const cdlOFNExtensionDifferent = &H400
Const cdlOFNFileMustExist = &H1000
Const cdlOFNHideReadOnly = 4
Const cdlOFNPathMustExist = &H800

Private Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

'Deklarasi API untuk membuka File
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private OFName As OPENFILENAME
Private conex As New ADODB.Connection

Private Sub Command1_Click()
    Dim sFile As String
    
    'Tampilkan Dialog box untuk mengambil file database
    sFile = ShowOpen
    
    If sFile <> "" Then
        'Jika file tidak kosong koneksikan ke database
        If KoneksiData(sFile) Then
            'simpan Lokasi database di registry sehingga bisa diambil
nanti
            SaveSetting App.EXEName, "Database", "Lokasi", sFile
            
            MsgBox "Data telah berhasil terkoneski ke file " + sFile,
vbInformation
        Else
            MsgBox "Koneksi ke Database Gagal " + vbCrLf + sFile,
vbExclamation
        End If
    Else
        'User membatalkan pengambilan data
        MsgBox "Anda telah membatalkan pengambilan data"
    End If
End Sub

Private Function ShowOpen() As String
    'Set ukuran dari struktur
    OFName.lStructSize = Len(OFName)
    'Set Owner dari window
    OFName.hwndOwner = Me.hWnd
    'Set instance dari window
    OFName.hInstance = App.hInstance
    'Set filter file
    OFName.lpstrFilter = "Access Database (*.mdb)" + Chr$(0) + "*.mdb"
+ Chr$(0)
    'Buat buffer
    OFName.lpstrFile = Space$(254)
    'Set panjang maksimum file
    OFName.nMaxFile = 255
    'Buat buffer lagi
    OFName.lpstrFileTitle = Space$(254)
    'Set panjang maksimum karakter
    OFName.nMaxFileTitle = 255
    'Set Direktori default
    OFName.lpstrInitialDir = "C:\"
    'Set judul dari dialog box
    OFName.lpstrTitle = "Set Lokasi Database"
    'Tambahkan extra Flag
    
    ' Flag untuk mematikan semua extensi yang berbeda, menyembunyikan
file read only, dan direktori harus ada
    OFName.flags = cdlOFNExtensionDifferent Or cdlOFNFileMustExist Or
cdlOFNHideReadOnly Or cdlOFNPathMustExist
    
    
    'Atau anda juga bisa menampilkan dialog box tanpa Flag
    'OFName.flags = 0

    'Tampilkan Form dialog
    If GetOpenFileName(OFName) Then
        ShowOpen = Trim$(OFName.lpstrFile)
    Else
        ShowOpen = ""
    End If
End Function

Private Function KoneksiData(lokasiDB As String) As Boolean
Dim Koneksi As String

On Error GoTo KoneksiGagal
    'Driver Jet OLEDB
    Koneksi = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
              "Data Source=" & lokasiDB & ";Persist Security Info=False"
    conex.Open Koneksi
    KoneksiData = True
Exit Function
KoneksiGagal:
    KoneksiData = False
End Function


Semoga dengan sedikit code ini dapat membantu anda dan teman-teman
yang lain.


Salam,



Aiska Hendra
Freelance Programmer


--- In [email protected], oki Hartanto <[EMAIL PROTECTED]> wrote:
>
> Ditangani ama program aja biar aman, jadi pada saat program
dijalanin cek apakah direktory tempat database di buat ada atao ngk,
kalo ngk ada bikin direktory baru, terus copyin databasenya juga ke
direktory itu, nah file databasenya simpan aja di tempat aplikasi di
install, biasanya udah otomatis disimpan disitu.., kalo perlu perintah
tentang copy, rename, bikin foleder atauy semua yang berhubungan
dengan file saya bisa bantu..., mungkin ada yang udah tau juga pake
microsoft scripting runtime, gampang cara kerjanya.
> 
> salam 
> 
> 
> oki
> 
> 
> Hery Kurniawan <[EMAIL PROTECTED]> wrote:                              
nah ini dah ada penjelasannya hehehehehe
>  
>  Steven Luck <[EMAIL PROTECTED]> wrote:                             
 Eh, sori, salah kasih pathnya.. hehe..
>   Nih yang bener...
>   
>   App.path itu return path tempat aplikasinya (executable file) berada.
>    
>    Jadi misalnya program VBnya itu buka database db_Problems.mdb,
dan nama file executable VB yang dibuat : file.exe
>    
>    Semua file database & exe nya di masukin dalam c:\Program.
>    
>    Nah, pas buat connection stringnya yang seharusnya :
>    con = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=c:\Program\db_Problems.mdb;Persist Security Info=False"
>    
>    bisa diganti jadi:
>    con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path
& "\db_Problems.mdb";Persist Security Info=False"
>    
>    Catatan : File-nya mesti satu folder dengan file aplikasi
(executable) nya.
>    
>    Kalo misalkan database-nya dimasukin dalam c:\Program\DB
>    maka diganti jadi gini connection stringnya:
>    con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path
& "\DB\db_Problems.mdb";Persist Security Info=False"
>    
>    Cya.
>   
>   Steven Luck <[EMAIL PROTECTED]> wrote:                            
  App.path itu return path tempat aplikasinya (executable file) berada.
>    
>    Jadi misalnya program VBnya itu buka database data.mdb, dan nama
file executable VB yang dibuat : file.exe
>    
>    Semua file database & exe nya di masukin dalam c:\Program.
>    
>    Nah, pas buat connection stringnya yang seharusnya :
>    con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\My
Documents\Steven's Privacy\Lesson\ACM Problems\ACM
Accepted\Organizer\db_Problems.mdb;Persist Security Info=False"
>    
>    bisa diganti jadi:
>    con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path
& "\db_Problems.mdb";Persist Security Info=False"
>    
>    Catatan : File-nya mesti satu folder dengan file aplikasi
(executable) nya.
>    
>    Kalo misalkan database-nya dimasukin dalam c:\Program\DB
>    maka diganti jadi gini connection stringnya:
>    con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path
& "\DB\db_Problems.mdb";Persist Security Info=False"
>    
>    Cya.
>    
>    CMIIW
>    
>    fachry ai <[EMAIL PROTECTED]> wrote:                             
 mohon dikasih penjelasan mengenai app.path...
>     terima kasih banyak...
>     
>     --- Hery Kurniawan <[EMAIL PROTECTED]> wrote:
>     
>     > coba pakai app.path ajah....
>     > 
>     > semoga membantu
>     > 
>     > 
>     > --- fachry ai <[EMAIL PROTECTED]> wrote:
>     > 
>     > > kebetulan gw juga lagi belajar saat ini....
>     > >   mungkin klo lu tau ntar,
>     > >   kasi tw gw juga yah,...
>     > >   biar kita sama2 pintar.....
>     > >   cayo,....
>     > >   Happy Idoel Fitrie 1428 H....
>     > > 
>     > > galuh adi insani <[EMAIL PROTECTED]> wrote:
>     > >           Teman-teman Indoprog semuanya saya
>     > membuat
>     > > sebuah aplikasi dengan 
>     > > menggunakan database Access, pembuatannya adalah
>     > > dengan membuat database 
>     > > Accessnya terlebih dahulu kemudian baru saya buat
>     > > script visual 
>     > > basicnya, berikut contoh script VBnya:
>     > > 
>     > > > Private Sub Form_Load()
>     > > > Dim Koneksi As String
>     > > > 'Driver ODBC Connection String
>     > > > Koneksi = "Driver={Microsoft Access Driver
>     > > (*.mdb)};" & _
>     > > > "Dbq=Kendali.mdb;" & _
>     > > > "DefaultDir=C:\Kendali;" & _
>     > > > "Uid=Admin;Pwd=;"
>     > > > conex.Open Koneksi
>     > > > End Sub
>     > > Yang menjadi permasalahan saya adalah file
>     > database
>     > > itu haruslah 
>     > > terletak di dalam folder Kendali dengan nama
>     > > Kendali.mdb dan terletak di 
>     > > drive C:. Pada saat saya package dengan package
>     > and
>     > > deployment, maka 
>     > > akan terbentuk sebuah instaler. Nah pertanyaan
>     > saya
>     > > bagaimana caranya 
>     > > agar pada saat saya instal program ini maka akan
>     > > terbentuk secara 
>     > > default sebuah folder kendali yang berisi database
>     > > Kendali.mdb tersebut 
>     > > dan letaknya persis seperti saat saya buat script
>     > > (C:\Kendali), karena 
>     > > jika database tersebut saya letakkan kedalam
>     > folder
>     > > yang lain maka tidak 
>     > > akan konek databasenya.
>     > > 
>     > > Pertanyaan saya berikutnya adalah bagaimana
>     > caranya
>     > > agar meskipun 
>     > > database diletakkan ditempat folder sembarang,
>     > > tetapi software dapat 
>     > > mengenali database saya tersebut dengan nama
>     > > Kendali.mdb dengan cara 
>     > > perubahan script, mungkin ada diantara teman-teman
>     > > yang ingin memberi 
>     > > tahu saya script tersebut.
>     > > 
>     > > Sebelum dan sesudahnya saya ucapkan banyak
>     > > terimakasih.
>     > > 
>     > > Salam,
>     > > Galuh Adi Insani
>     > > 
>     > > ++ Saya ucapkan mohon maaf lahir dan bathin,
>     > selamat
>     > > Idhul Fitri ++
>     > > 
>     > > 
>     > > 
>     > >                          
>     > > 
>     > >  Send instant messages to your online friends
>     > > http://uk.messenger.yahoo.com 
>     > > 
>     > > [Non-text portions of this message have been
>     > > removed]
>     > > 
>     > > 
>     > 
>     > 
>     > 
>     >        
>     >
>     __________________________________________________________
>     > Boardwalk for $500? In 2007? Ha! Play Monopoly Here
>     > and Now (it's updated for today's economy) at Yahoo!
>     > Games.
>     >
>     http://get.games.yahoo.com/proddesc?gamekey=monopolyherenow
>     >  
>     > 
>     
>     Send instant messages to your online friends
http://uk.messenger.yahoo.com 
>     
>         
>                                   
>    
>    Steven Luck
>    
>    "The Only Thing for The Triumph of Evil is For A Good Man to Do
Nothing"
>    
>    ---------------------------------
>     Check out  the hottest 2008 models today at Yahoo! Autos.
>    
>    [Non-text portions of this message have been removed]
>    
>    
>        
>                                  
>   
>   Steven Luck
>   
>   "The Only Thing for The Triumph of Evil is For A Good Man to Do
Nothing"
>   
>   ---------------------------------
>   Boardwalk for $500? In 2007? Ha! 
>   Play Monopoly Here and Now (it's updated for today's economy) at
Yahoo! Games.
>   
>   [Non-text portions of this message have been removed]
>   
>   
>       
>                                 
>  
>  __________________________________________________
>  Do You Yahoo!?
>  Tired of spam?  Yahoo! Mail has the best spam protection around 
>  http://mail.yahoo.com 
>  
>  [Non-text portions of this message have been removed]
>  
>  
>      
>                                
> 
> 
> Oki Hartanto 
> 
>   My Blog n See My picture in ..:: OKI_H ::..
> 
>        
> ---------------------------------
> Yahoo! oneSearch: Finally,  mobile search that gives answers, not
web links. 
> 
> [Non-text portions of this message have been removed]
>


Kirim email ke