Ik heb een progje geschreven dat zijn informatie opslaat in een Database. In het filemenu heb ik dus ook "Opslaan als..." staan. Als de gebruiker dan een bestand selecteert dat al bestaat dan krijg hij de vraag of deze overschreven moet worden. Vervolgens wordt het bestand gedelete en maakt het programma gewoon een nieuw bestand aan met die bestandsnaam.
Dat werkt alleen de eerste keer goed. Als ik het daarna nog een keer doe en het bestand weer wil overschrijven dan wordt de file eerst netjes gedelete, maar toch krijg ik van de TAdoxCatalog de foutmelding dat de database al bestaat. In de help van Delphi staat niks over de TAdoxCatalog (waarom weet ik niet, maar goed) ik kan dus niet ontdekken waarom het fout gaat.
De code is als volgt:
Op "ADOXCatalog1.Create1(DataSource);" loopt hij dus vast als ik het de tweede keer doe. Ik heb het idee dat het er mee te maken heeft dat hij bij de tweede keer zelf het bestand heeft aangemaakt. Dus dat ie dat nog weet. Maar hoe verander ik dat?
Dat werkt alleen de eerste keer goed. Als ik het daarna nog een keer doe en het bestand weer wil overschrijven dan wordt de file eerst netjes gedelete, maar toch krijg ik van de TAdoxCatalog de foutmelding dat de database al bestaat. In de help van Delphi staat niks over de TAdoxCatalog (waarom weet ik niet, maar goed) ik kan dus niet ontdekken waarom het fout gaat.
De code is als volgt:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| procedure TfrFormulier.OpslaanAlsClick(Sender: TObject); var DataSource,dbName,cs : string; i: integer; aStream: TStringStream; const S_EMPTY = ''; begin //create DB SaveDialog1.DefaultExt:='mdb'; SaveDialog1.Filter:='(mdb, *.mdb)|*.mdb;'; if (SaveDialog1.Execute) then begin if FileExists(SaveDialog1.FileName) then if (MessageDlg('Bestand bestaat al, overschrijven?', mtConfirmation,[mbYes, mbNo], 0) = mrYes) then DeleteFile(SaveDialog1.FileName) else Abort; dbName:=SaveDialog1.FileName; DataSource := 'Provider=Microsoft.Jet.OLEDB.4.0' + ';Data Source=' + dbName + ';Jet OLEDB:Engine Type=5'; ADOXCatalog1.Create1(DataSource); ... |
Op "ADOXCatalog1.Create1(DataSource);" loopt hij dus vast als ik het de tweede keer doe. Ik heb het idee dat het er mee te maken heeft dat hij bij de tweede keer zelf het bestand heeft aangemaakt. Dus dat ie dat nog weet. Maar hoe verander ik dat?
[ Voor 6% gewijzigd door Oscar Mopperkont op 21-01-2005 11:30 ]