[vb] Database readonly (op cd)*

Pagina: 1
Acties:

  • coelho
  • Registratie: Augustus 2000
  • Laatst online: 04-08 21:32
Namens een vriend wil ik hetvolgende vragen:
Ik heb een programma in VB 6.0 gemaakt, dit programma zoekt naar records in een database, het programma werkt goed op de harde schijf, maar zodra ik het op een cd-rom brandt, doet het programma het niet... In VB wordt de database alleen maar gelezen, dus niet geschreven, maar hij geeft de error dat ik een administrator moet zijn om het bestand te mogen lezen, terwijl ik dat al ben...
Als ik de data-control vervolgens op read-only zet, zegt ie dat hij het bestand niet kan vergrendelen. Wat ik dus niet begrijp is dat het nodig is het bestand te vergrendelen, het is toch genoeg om de data-control te verbieden te schrijven, of niet, en voor de rest zou ik graag willen dat het programma gewoon vanaf een cd'tje draait, zoals gezegd werkt het vanaf de harde schijf prima.
En ik wil geeeen installatie, de runtime bestanden worden dan ook met een silent-install erop gezet. Kan iemand mij helpen??? Bij voorbaat dank
Is er misschien iemand die hem verder kan helpen? Ik speel de antwoorden wel aan hem door, of nog beter, ik laat hem het topic wel lezen.

edit:

Wil een modje misschien "Database vraag" of iets dergelijks in de titel zetten? Ik was te snel met versturen

PVoutput 7.700Wp ZZO (50°)


Verwijderd

Heb je al met google gezocht, die heeft waarschijnlijk wel een antwoord op deze vraag

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

Verwijderd schreef op 12 september 2002 @ 08:04:
Heb je al met google gezocht, die heeft waarschijnlijk wel een antwoord op deze vraag
*Tot zover de 'ik wil in de HK replies'*

Het misschien wel handig om te vermelden welke database je gebruikt. Als je Access opent bv, probeert deze een tijdelijk bestand aan te maken. Zou een probleem kunnen worden op een CD-ROM :/

oogjes open, snaveltjes dicht


  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 14:48

Exterazzo

Qeasy

Don Facundo schreef op 12 september 2002 @ 08:11:
[...]


*Tot zover de 'ik wil in de HK replies'*

Het misschien wel handig om te vermelden welke database je gebruikt. Als je Access opent bv, probeert deze een tijdelijk bestand aan te maken. Zou een probleem kunnen worden op een CD-ROM :/
Ik neem idd aan dat dit Access is omdat dit natuurlijk een veel voorkomende database is icm met VB. Maar die maakt idd een lbd bestand aan. Misschien kan je met parameters aangeven dat je dit bestand ergens anders kan laten plaatsen. Anders zie ik ook geen oplossing dan de DB gewoon naar de HD te kopieeren. Desnoods vanuit je programma naar een temp directory kopieeren en van daaruit de database openen.

Audentia


Verwijderd

Je zou ook kunnen proberen (als je alleen maar "simpele" queries uit tabellen haalt) om een text-mode odbc connectie te gebruiken.

Dan is je DB een groot tekstbestand, en je gebruikt een ODBC connectie om daaruit te lezen.
Dat kan iig wel met read-only files.

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 28-08 08:57

TwoR

Gekleurde stippen

Misschien kan je het bestand dat aangemaakt wordt door access op een andere plek laten neerzetten. Ergens op de harddisk. Dan ben je van je robleem af

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 28-08 15:30

sopsop

[v] [;,,;] [v]

Volgens mij wordt bij iedere database (niet alleen Access) wat geschreven, ook als het readonly acties zijn. Er is altijd iets van logging aanwezig over geconnecte users, gelockte records etc.
Een flatfile kan idd een oplossing bieden, maar de optie om de database tijdelijk in een temp directory te plaatsen lijkt mij ook een prachtige oplossing.
Let dan wel op dat je op de 1 of andere manier de properties van de database goed zet (bij het kopieren vanaf een CD willen de read-only en archive properties van een file wel eens anders staan als toen die op CD werd gezet.

Verwijderd

hoe groot is de DB? misschien is het een optie om die mooi met een installer mee te laten gaan, dan ben je overal vanaf...

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Je kunt proberen met wat properties te gaan klooien, zoals:
with datacontrol geval
.ReadOnly = False
.DefaultCursorType = RecordsetTypeConstants.vbRSTypeDynaset
end with

etc..

Misschien staat er ook wel iets op MSDN hierover..

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 01-09 11:10

Basszje

Reisvaap!]

Volgens mij moet je in dit soort gevallen even bekijken naar wat voor recordset je probeert te openen. Probeer bv eens een alleen-lezen recordset te openen.

De lettertjes meneer hierboven geeft dat volgens mij ook al aan :P , alleen heb je denk ik geen Dynaset nodig, maar iets anders :) .

Even de recordset doc checken en ik denk dat je daar je antwoord wel vind.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Uit MSDN:
However, in Microsoft Access versions 7.0 and 97, the .ldb file is not created when a user opens the database exclusively. When you attempt to open the database from the most recently used file list, you receive the following error message:
Dus als je de database exclusive opent wordt er geen .ldn aangemaakt.

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 28-08 15:30

sopsop

[v] [;,,;] [v]

Verwijderd schreef op 12 september 2002 @ 10:10:
Uit MSDN:


[...]


Dus als je de database exclusive opent wordt er geen .ldn aangemaakt.
Maar ik maak me sterk dat je dan nog steeds schrijfrechten nodig hebt!

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Basszje schreef op 12 september 2002 @ 10:04:
Volgens mij moet je in dit soort gevallen even bekijken naar wat voor recordset je probeert te openen. Probeer bv eens een alleen-lezen recordset te openen.

De lettertjes meneer hierboven geeft dat volgens mij ook al aan :P , alleen heb je denk ik geen Dynaset nodig, maar iets anders :) .

Even de recordset doc checken en ik denk dat je daar je antwoord wel vind.
en cijfers ;)

Maar waren alleen maar property voorbeelden van het project wat ik nu open heb. Readonly zou true meoten zijn, en de Dynaset zou waarschijnlijk "snapshot" moeten worden (als het nog zo heet tegenwoordig)

Verwijderd

boppert schreef op 12 september 2002 @ 10:13:
[...]

Maar ik maak me sterk dat je dan nog steeds schrijfrechten nodig hebt!
Schrijfrechten zijn niet van toepassing hier. Access en de jet engine die gebruikt wordt door o.a. VB, maken een .ldb file aan zodra een file shared geopent wordt, ongeacht of je in een control schrijfrechten hebt. Dat gebeurd namelijk pas NADAT de database al geopend is.

Volgens de MSDN doc's is de enige oplossing om te voorkomen dat een .ldb aangemaakt wordt, de database exclusief openen, en dat is waar het hier om ging.

  • coelho
  • Registratie: Augustus 2000
  • Laatst online: 04-08 21:32
Ik zal de antwoorden doorspelen aan die vriend. Ik snap niet veel van VB, maar jullie zeggen dus dat het kan als de database exclusief geopend wordt?
Als dat zo is, wat houdt dat dan precies in, de database exclusief openen?

PVoutput 7.700Wp ZZO (50°)


Verwijderd

Ik heb het net ff getest maar helaas ;( ;) . Wanneer ik op mijn Access db het readonly attribuut aanvink dan werkt m'n programma niet (already open by another user bla bla). Je zult dus een andere oplossing moeten zoeken.
Kun je de DB niet eerst naar een temp directory kopieeren, en deze dan vervolgens openen?
Anders zou je kunnen overschakelen op een XML file wanneer dit niet een te grote impact op je App heeft.

  • coelho
  • Registratie: Augustus 2000
  • Laatst online: 04-08 21:32
Verwijderd schreef op 12 september 2002 @ 12:46:
Kun je de DB niet eerst naar een temp directory kopieeren, en deze dan vervolgens openen?
Liever niet. Het is een applicatie die als relatiegeschenk wordt weggegeven. Het zou zo moeten zijn dat de cd in de speler gestopt wordt, en dat alles meteen werkt, zonder dat de (onwetende) gebruiker nog allerlei bestanden moet gaan downloaden/kopiëren naar de harde schijf.

PVoutput 7.700Wp ZZO (50°)


Verwijderd

coelho schreef op 12 september 2002 @ 13:33:
[...]

Liever niet. Het is een applicatie die als relatiegeschenk wordt weggegeven. Het zou zo moeten zijn dat de cd in de speler gestopt wordt, en dat alles meteen werkt, zonder dat de (onwetende) gebruiker nog allerlei bestanden moet gaan downloaden/kopiëren naar de harde schijf.
Ik bedoel dat het programma bij het starten de DB kopieert naar windows temp dir, en bij het afsluiten deze weer netjes verwijderd.
Indien hij bij Access wil blijven dan heb je geenn andere optie imho. Naar mijn beste weten zal hij toch een andere bron moeten gaan zoeken voor zijn gegevens.

  • coelho
  • Registratie: Augustus 2000
  • Laatst online: 04-08 21:32
Misschien laat ik met de volgende vraag het niveau hier drastisch zakken hoor ;) , maar hoe/waarmee kun je de db naar de temp laten kopieren? Kan dat met VB? Hoe dan? En als dat gebeurt, kan dat dan ook stil gebeuren, dus zonder dat gebruiker dat ziet, moet bevestigen etc.

PVoutput 7.700Wp ZZO (50°)


Verwijderd

De DB is gewoon een bestand (blabla.mdb).
Er vanuit gaande dat het bestand bij de VB exe in de directory zit (In App.path staat de huidige directory), kun je gewoon via een API functie (ff de API text viewer bij VB gebruiken) CopyFileA() de file kopieren naar een temp directory zodra het programma start ). Bij het afsluiten kun je het tegenovergestelde doen.
As easy as taking candy from a baby ;) . Hoe je dit concreet kunt doen kun je na wat sneupen vast wel in de MSDN bibliotheek vinden.

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 01-09 11:10

Basszje

Reisvaap!]

Volgens mij heb je daar niet eens de API voor nodig, maar kan je gewoon via VB commando's ( of filesystemobject! , ff bij je references kijken ) het zutje kopieeren naar je temp schijf.

En temp is volgens mij gewoon een constante onder windows.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

of FileCopy source, dest gewoon in Vb..

Verwijderd

Ik heb ook even getest: indien je bij het openen van de database als optie meegeeft Exclusive, dan wordt er daadwerkelijk geen .ldb aangemaakt. Ook met een database op readonly (op een cd is de database ook readonly) werkt het.

  • igmar
  • Registratie: April 2000
  • Laatst online: 23-08 16:57

igmar

ISO20022

coelho schreef op 11 september 2002 @ 21:50:
Namens een vriend wil ik hetvolgende vragen:
Is er misschien iemand die hem verder kan helpen? Ik speel de antwoorden wel aan hem door, of nog beter, ik laat hem het topic wel lezen.

edit:

Wil een modje misschien "Database vraag" of iets dergelijks in de titel zetten? Ik was te snel met versturen
Access maakt een lockfile (.LCK) aan in de dir waar ook de database staat.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

igmar schreef op 13 september 2002 @ 11:40:
[...]


Access maakt een lockfile (.LCK) aan in de dir waar ook de database staat.
Heb je het topic wel gelezen. Dit is te voorkomen door met exclusiefe rechten de database te openen.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

waarom gebruik je niet gewoon XML?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

gewoon even een database vervangen door xml, eeeuhm I don't think so.

oogjes open, snaveltjes dicht


Verwijderd

Mensen, ik heb sinds vandaag ook een login, moest eerst natuurlijk weer een provider mailadres krijgen, maar het is gelukt met de exclusive-property, hartelijk dank
Pagina: 1