Toon posts:

Batch openen in Acces via vb

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey,

Ik ben voor stage bezig met een database voor de inventarisatie van de school-computers.
Ik heb hem bijna af alleen ik zit met 1 klein probleempje.
Ik heb een soort backp funtie gemaakt via een batchfile die de actieve database kopieert. Ik wil deze batchfile oproepen d.m.v een knop/link.

Nu komt het probleem,
Het is nog niet zeker waar de database kmt te staan en of ie op dezelfde plaats blijft staan. dit is dus het probleem want als je een bestand wil starten MOET je het pad opgeven.

Is er een manier dat ie automatisch het pad pakt waar de database instaat
voorbeeld:

de database staat in c:\inventory\inventory.mdb
de batch file staat in c:\inventory\backup.bat

nu moet ik in vb dus aangeven dat de batchfile daar staat, maar deze locatie kan dus nog wel eens veranderen

ik heb al met verschillende ideeen zitten klooien
- CurDir
- SendKeys
- %directory%

Maar ik kom er niet uit


Ik hoop dat ik het een beetje duidelijk omschreven heb (8>

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Windows batchfiles -> Windows Operating Systems :)

Professionele website nodig?


  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 21:49
welke code gebruik je om de batch file uit te voeren? en hoezo moet je het pad opgeven?
misschien dat .\backup.bat wel werkt

\o/ 600e post

[ Voor 17% gewijzigd door nescafe op 17-06-2004 19:09 ]

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Access VBA -> Software Algemeen B)

offtopic:
Feli nescafe. Broekkie :z ;)


Acces via vb -> VBA neem ik aan? Waarom werkt CurDir dan niet? Zou prima moeten werken als de mdb staat waar je het aanroept. (Al heb ik geen ervaring met Access >= 2k, is dat in Wd en Xls geen punt).

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Boss
  • Registratie: September 1999
  • Laatst online: 21:50

Boss

+1 Overgewaardeerd

Ik denk dat je
code:
1
CurrentProject.Path

zoekt.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Sorry dat ik hem misschien op de verkeerde plaats heb gepost.

@ NesCafe
ik gebruik nu de code
code:
1
2
3
4
5
6
7
Private Sub BackUp_Click()

Dim RetVal
RetVal = Shell("c:\inventory\backup.bat", 1)


End Sub


Nu MOET je de het pad "c:\inventory\" opgeven anders krijg ik iedere keer de melding: Kan het bestand niet vinden. (.\backup werkt dus niet)


@Boss
Bedoel je dat het dan zo?
code:
1
2
3
4
5
6
7
Private Sub BackUp_Click()

Dim RetVal
RetVal = Shell("CurrentProject.path\backup.bat", 1)


End Sub

want dit werkt dus ook niet.
Of is er misschien een andere oplossing?

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 21:49
Kun je geen gebruik maken van het FileSystemObject en is het eigenlijk wel mogelijk om een geopende database te kopiëren?

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


  • Boss
  • Registratie: September 1999
  • Laatst online: 21:50

Boss

+1 Overgewaardeerd

Verwijderd schreef op 18 juni 2004 @ 08:25:
@Boss
Bedoel je dat het dan zo?
code:
1
2
3
4
5
6
7
Private Sub BackUp_Click()

Dim RetVal
RetVal = Shell("CurrentProject.path\backup.bat", 1)


End Sub

want dit werkt dus ook niet.
Nou, nou... even blijven nadenken he.
Het ene is een variabele (CurrentProject.Path) en het andere is een string (\backup.bat). Hoe plak je die in VBA netjes aan elkaar?

Toch niet door ze gewoon samen tussen quotes te zetten he!

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
Dat is wel mogelijk via een batchfile vandaar dat ik het dus op deze manier wil doen.

Sorry maar hoe wil je dat dan voor elkaar krijgen met FS?

Verwijderd

Topicstarter
Nou, nou... even blijven nadenken he.
Het ene is een variabele (CurrentProject.Path) en het andere is een string (\backup.bat). Hoe plak je die in VBA netjes aan elkaar?

Toch niet door ze gewoon samen tussen quotes te zetten he!
MMM Ben wel een beetje een n00b wat VBa betreft. :?
Hoe moet dit dan staan? ;)

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 28-08 08:51
code:
1
2
Dim RetVal
RetVal = Shell(CurrentProject.path & "\backup.bat", 1)

Icons are overrated


Verwijderd

Topicstarter
HIJ WERKT !!!!


Uhmm dat dacht ik.

Het werkt wel maar de batch zelf werkt niet omdat hij dus in de root van c: zoekt.
Nu is dat geen probleem zul je zeggen " dat kun je opvangen in de batch zelf door:
code:
1
cd inventory

maar het is wel een probleem omdat ik niet weet in welke directory hij komt of op welke drive letter.

Is er geen manier dat het cmd venster openent op de directory waar de database staat.

[ Voor 88% gewijzigd door Verwijderd op 18-06-2004 09:28 ]


  • Boss
  • Registratie: September 1999
  • Laatst online: 21:50

Boss

+1 Overgewaardeerd

Je kan een parameter meegeven aan een batch bestand, dus bijv.
mijnbatch.bat test

en dan in je batch kan je met %1 de variabele gebruiken.

en volgens mij kan je met dir() ofzo (in vba) ook nog je actieve directory instellen

[ Voor 24% gewijzigd door Boss op 18-06-2004 09:34 ]

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Verwijderd

Topicstarter
ik krijg het gewoon niet voor elkaar

hij begint gewoon iedere keer op c:\

:( :( :(

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 21:49
Verwijderd schreef op 18 juni 2004 @ 10:06:
ik krijg het gewoon niet voor elkaar
Verklaar u nader.. Wat heb je geprobeerd?

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

offtopic:
Calbo, zo te zien is het verstandig voor je om nog eens goed de basics van VBA (en batch files) door te nemen als je verder gaat met dit project. Je vraag ontaart namelijk nogal in iets dat "eigenlijk" heel goed is uit te vinden met de intro onder F1 en de uitleg op verschillende websites (ook in de SA FAQ) over batch files ;)


En inderdaad kan je de directory als parameter meegeven; of je zet in VBA de huidige/werk directory. Maar gewoon een parameter is makkelijker.

En zie de vraag hierboven, dan pas kunnen we meedenken :P

[ Voor 7% gewijzigd door F_J_K op 18-06-2004 10:17 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
Ik heb heb nu zover dat hij netjes de batch op start.

ik zal het batch bestand ook even laten zien.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@echo off
color fc
cls
echo.
echo.
echo.
echo.
echo.
echo.            
echo                Wilt u de oude backup verwijderen?  
echo        -------------------------------------------------------
echo.                                   
echo            [J] Oude backup verwijderen             
echo            [N] Oude backup Behouden        
echo.                                   
echo.                                   
echo.       
del backup\*.mdb >nul
pause
cls
echo Er word een reserve kopie gemaakt in ..\backup\
copy inventory.mdb backup\"%date%.mdb" >nul
cls
echo succesvol gemaakt...


Nu wil hij dus een bestand verwijderen in C:\BACKUP\
terwijl hij op m:\inventory\backup\ staat

cmd.exe moet dus eigenlijk op de directory beginnen van de database zelf!

dit heb ik geprobeerd:

code:
1
2
3
4
5
Private Sub Bijschrift0_Click()
Dim RetVal
mydir = CurrentProject.Path
RetVal = Shell(CurrentProject.Path & "\backup.bat mydir", 1)
End Sub


code:
1
2
3
4
5
Private Sub Bijschrift0_Click()
Dim RetVal
mydir = CurrentProject.Path
RetVal = Shell("cmd.exe mydir", 1)
End Sub


maar hij begint iedere keer mooi in de root van c: 8)7
Pagina: 1