"Military intelligence is a contradiction in terms." - Groucho Marx, American Comedian, Actor and Singer, 1890-1977
CREATE TABLE ??
Maak ook gebruik van Delphi maar met ZEOSLIB, werkt fijner als de ADO componenten.
Kan je geen andere (tijdelijke) datastore gebruiken, zoals het geheugen ?
Eerst het probleem, dan de oplossing
Nee, want daarmee maak je geen database (mdb file) aan, maar een nieuwe tabel. Het voorbeeld gebruikt ADOX om een nieuwe database aan te maken en gaat vervolgens gewoon verder om via ADO mbv querys (o.a. CREATE TABLE ...) de tabellen aan te maken.Depress schreef op zondag 26 maart 2006 @ 15:42:
Is simpele sql:
CREATE TABLE ??
Maak ook gebruik van Delphi maar met ZEOSLIB, werkt fijner als de ADO componenten.
Ik heb geen zin om een sig te maken.
Verwijderd
Verwijderd
Een nieuwe Access database is 96 kB (2000 bestandsformaat). Als je 96 kB teveel vindt om als resource in je applicatie te zetten kun je altijd nog compressen. Even ter indicatie: WinRAR maakt er 6 en 9 kB van voor respectievelijk RAR en ZIP. Zelf even kijken wat ZLib(Ex) doet.
[ Voor 4% gewijzigd door Verwijderd op 26-03-2006 21:59 ]
Het is denk ik mogelijk om runtime een access db aan te maken. Ik heb applicatie's dit namelijk zien doen.
Verwijderd
En 96 kB maakt erg weinig uit inderdaad, zeker met Delphi applicaties die al gauw op 500 kB ~ 2 MB zitten. Dat die 96 kB toch teveel is, is de enige reden die kan bedenken om runtime de database te maken.
Het programma wat ik schrijf is een conversie-tool dat een text bestand met daarin een lijst met coordinaten moet omzetten in een drawing-file. Een drawing file is een specifiek bestand dat we hier op ons werk gebruiken om lijnen mee op de digitale kaart te zetten (routes, grenzen e.d.). Een drawing blijkt niets anders te zijn dan een MS Access database.
Dus de gebruiker moet een output file kunnen kiezen: De drawing file. Daarom moet ik een access DB maken. Een lege DB insluiten in de code is ook een oplossing maar (a) minder elegant en (b) daarvan heb ik al helemaal geen idee hoe dat moet.
De oplossing aangehaald door Thekk op about.delphi.com biedt mij geen oplossing want daar refereren ze aan een TADOXCatalog component en dat heb ik dus niet in Delphi 2005... Deze oplossing had ik zelf ook al gevonden maar dus af moeten schrijven
Is er wellicht een ander component wat hetzelfde kan doen voor mij? Ik ga zelf wel effe zoeken naar de oplossing om een bestand als resource in te sluiten
"Military intelligence is a contradiction in terms." - Groucho Marx, American Comedian, Actor and Singer, 1890-1977
als je op groups.google.com zoekt op: "delphi create access database" dan krijg je tientallen bruikbare posts.
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
| { Create a Microsoft Access Database file (MDB)
pass in the complete path of the MDB file to create }
function CreateAccessMDB(Filename: string): boolean;
var
DBEngine: OLEVariant;
DBLocale: string;
strbuf: array[0..20] of char;
begin
try
{ connect to MS Jet DB Engine... }
DBEngine := CreateOLEObject('DAO.DBEngine.35');
{ get locale info for creating database... }
GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_IDEFAULTLANGUAGE,strbuf,20);
DBLocale := ';LANGID=0x'+strbuf; { language code as C-style hex
integer (0x0809 for UK English) }
GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_IDEFAULTCODEPAGE,strbuf,20);
DBLocale := DBLocale+';CP='+strbuf; { default code page (850 for UK
English) }
GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_IDEFAULTCOUNTRY,strbuf,20);
DBLocale := DBLocale+';COUNTRY='+strbuf; { country code (44 for
UK English) }
DBEngine.CreateDatabase(Filename,DBLocale);
Result := true;
except
on EOleException do
Result := false;
{ ...may want to put an error message/help context in here... }
end;
end; |
To create a MSAccess 2000 File You have probably to substitute the line
DBEngine := CreateOLEObject('DAO.DBEngine.35');
with the one
DBEngine := CreateOLEObject('DAO.DBEngine.40');
...JET 4.0 is shipped with Office 2000.
Je moet maar ff kijken, ik denk dat je op groups.google.com zeker je antwoord vind
Hans Dorrestijn: "Want, de worstjes van de Hema zijn niet te hard of slap...De Hemaworst, hoera hoera, zit barstens vol met sap.Baby's die nu juichen aan de moederborst...Zouden harder zuigen aan de Hemaworst"
"Military intelligence is a contradiction in terms." - Groucho Marx, American Comedian, Actor and Singer, 1890-1977