Hur gör jag en öppna funktion Hej det hänvisar bara till databasen hej men programet ska inte fråga efter mdb filen utan jag ska välja den manuellt från en knapp... Om du har nått i form_load så ska det bort. Hej Oki då kan det bli enl denna princip Du har så rätt så sven, jag gjorde ett exempel enbart på commondialog, han fråga ju hur man skrev för att använda den. men ok, lämnar tråden. Sven.. Bara ett liten fråga kvar.. Hej Oki på det ta bort detta OpenError: Hej igen Så här har jag skrivit Här värkar felet vara kan man inte koppla en händelse till knappen Cancel.. Det SvenPon glömde i sin kod var att du måste sätta CancelError = True Nu funkar det fint.. Hej igen epilogapp.path
för närvarande så gör jag
<code>
Private Sub Form_Load()
'ws = Workspace
'Db = Databas
'rs = Recordset
Set ws = DBEngine.Workspaces(0)
' Här hämtar jag mdb filen.
Set db = ws.OpenDatabase(App.Path & "\db\CdReg.mdb")
'Här är formuläret som tabellerna ligger i
Set rs = db.OpenRecordset("main", dbOpenTable)
End Sub
</code>
Hur gör jag för att kunna skapa en öppna funktionSv: app.path
Varför vill du göra en funktion av det.Tycker det ser bra ut som det är. Men Ok.
Private Sub Form_Load()
'ws = Workspace
'Db = Databas
'rs = Recordset
Set ws = DBEngine.Workspaces(0)
' Här hämtar jag mdb filen.
Set db = ws.OpenDatabase(OpenDb)
'Här är formuläret som tabellerna ligger i
Set rs = db.OpenRecordset("main", dbOpenTable)
End Sub
Private Function OpenDb() As String
OpenDb = App.Path & "\db\CdReg.mdb"
End Function
/SvenSv: app.path
jag vill att man ska kunna använda (arkiv-öppna) för att kunna ha databasen
på olika ställen..
ex:
Som ifall jag använder den på servern så kan det bli
"d:\databaser\cdreg" och använder jag programet från datorn
så blir det
"N:\databaser\cdreg"
Vet att man måste använda
CommonDialog
men inte hur jag ska skriva!!!Sv: app.path
<code>
commondialog1.showopen
msgbox commondialog1.filename ' detta ger sökvägen till filnamnet på din databas
</code>
/BSv: app.path
<code>
Private Function OpenDb() As String
commondialog1.showopen
OpenDb = commondialog1.filename
End Function
</code>Sv: app.path
Nu frågar han efter den så fort jag startar programet...Sv: app.path
alltså om det kallar på sökvägen till din databas.
vill du inte välja varje gång du startar får du spara det som commondialog1 ger som filnamn o sökväg
<code>
Private sub command1_click
call OpenDb 'denna kallar på din funktion som öppnar
end sub
</code>
<code>
Private Function OpenDb() As String
commondialog1.showopen
OpenDb = commondialog1.filename
End Function
</code> Sv: app.path
du bör lägga upp en Meny Open .CommonDialog heter här CmDialog
Inte som Berra råder, det här skall givetvis vara kvar
Private Sub Form_Load()
'ws = Workspace
'Db = Databas
'rs = Recordset
Set ws = DBEngine.Workspaces(0)
' Här hämtar jag mdb filen.
End Sub
Private Sub mnuOpen_Click()
'Cancel Error är True
On Error GoTo OpenError
CmDialog.Filter = "Access97 mdb|*.mdb"
CmDialog.InitDir = App.Path
CmDialog.DefaultExt = "*.mdb"
CmDialog.DialogTitle = " Öppna DataBas"
CmDialog.Flags = &H1000
CmDialog.FileName = ""
CmDialog.ShowOpen
PathMinDb = CmDialog.FileName
Set db = ws.OpenDatabase(PathMinDb)
'Här är formuläret som tabellerna ligger i
Set rs = db.OpenRecordset("main", dbOpenTable)
OpenError:
'Användaren tryckte Avbryt
End Sub
/Sven
"main" ovan förstår jag inte
DSSv: app.path
Lycka till:)Sv: app.path
Öppnar man databasen så funkar det fint.. Väljer man avbryt så får man sitta och klicka bort felmedelanden..Sv: app.path
' Användaren tryckte Avbryt
Viktigt ! Jag vill gärna ha FeedBack på vad det står i felmeddelanden
efter Avbryt . Lite märkligt att du behöver göra så.
Lägg till detta
OpenCancel:
Exit Sub
OpenError:
On Error Goto 0
Resume OpenCancel
'Användaren tryckte Avbryt
End Sub
/SvenSv: app.path
Efter att ha funderat ett tag , så kom jag fram till att du kanske
borde ta bort denna flag CmDialog.Flags = &H1000
Den håller koll på att du anger en godkänd sökväg.
Om det då är tomt i Filnamn rutan får du förmodligen det fel som du anger.
Spånar
/SvenSv: app.path
<code>
Private Sub mnuArkivOppna_Click()
On Error GoTo OpenError
CmDialog.Filter = "Access97 mdb|*.mdb"
CmDialog.InitDir = App.Path
CmDialog.DefaultExt = "*.mdb"
CmDialog.DialogTitle = " Öppna DataBas"
'CmDialog.Flags = &H1000
CmDialog.FileName = ""
CmDialog.ShowOpen
PathMinDb = CmDialog.FileName
Set db = ws.OpenDatabase(PathMinDb)
'Här är formuläret som tabellerna ligger i
Set rs = db.OpenRecordset("main", dbOpenTable)
'Här anropas funktionen som hämtar all data till
'Listboxen
list
OpenError:
End Sub
</code>
det som händer när jag klickar avbryt
är att en ruta kommer upp som heter
"Select Data Source"
och där får man klicka på avbrytSv: app.path
<code>
Private Sub Form_Load()
'Denna rad är det som spökar ifall man trycker på Cancel
'Har man inte den så funkar det inte
Set ws = DBEngine.Workspaces(0)
End Sub
</code>Sv: app.path
typ ifall Cancel
då går du till sista raden..Sv: app.path
Skriv detta först i din kod.
<code>
CmDialog.CancelError = True
</code>
Då kommer du att hamna i felhanteringen när du trycker på Cancel med fel nummer 32755
Så stoppa in denna kod i felhanteringen så att du tar hand om felet på ett korekt sätt
<code>
If Err.Number = 32755 Then
Err.Clear
MsgBox "Du måste välja en fil", vbInformation, "Open db"
Exit Sub
End If
</code>
//TobbeSv: app.path
Till alla som hjälpt så vill jag värkligen tacka för hjälpen..
ni är värd en ros...Sv: app.path
>Det SvenPon glömde i sin kod var att du måste sätta CancelError = True
Konstigt att man inte valt att ha detta som default.
/Sven