Toon posts:

[ASP/SQL] Database aanmaken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Waarom werkt het niet als ik via ASP een database wil aanmaken middels het volgende statement ?

dim strSQL
strSQL = "CREATE DATABASE TEST"
set daoRecord = daoConn.Execute(strSQL)

Iemand ???? Of je moet perse ook meteen een tabel aanmaken ???

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Het werkt niet....
Wat werkt niet, welke foutmelding krijg je, etc.....

Zie ook : Welkom in P&W -> Quickstart (update 2/10/2002)

[ Voor 33% gewijzigd door whoami op 31-01-2003 13:55 ]

https://fgheysels.github.io/


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Beetje kale code... Wat is daoConn (een DAO connectie?)? Issie ge-set? Werkt de connectie? Welke foutmelding krijg je?

Beetje specifieker mag wel.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
De connectie is het probleem niet. Die is via een include file geregeld. Ik krijg de volgende foutmelding :

Microsoft JET Database Engine fout '80040e14'

De instructie CREATE TABLE bevat een syntaxisfout.

Terwijl ik een CREATE DATABASE aanroep :?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Post alle relevante code es... (en dan met [code] tags a.u.b)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Verwijderd schreef op 31 januari 2003 @ 13:58:
De connectie is het probleem niet. Die is via een include file geregeld. Ik krijg de volgende foutmelding :

Microsoft JET Database Engine fout '80040e14'

De instructie CREATE TABLE bevat een syntaxisfout.

Terwijl ik een CREATE DATABASE aanroep :?


[guess-mode]
Misschien heeft het wel met de onderliggende engine te maken. Access werkt met een *.mdb file waar alle database gegevens inzitten. Als je die file eenmaal hebt (wat je standaard hebt als je mbhv Access een nieuwe db maakt), dan hoef je die CREATE DATABASE niet eens op te kunnen roepen, en misschien zal die JET engine dat statement dus ook niet ondersteunen.
[/guess-mode]

https://fgheysels.github.io/


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
Dim daoConn, daoRecord, strDBName

Set daoConn = Server.CreateObject("ADODB.Connection")
Set daoRecord = Server.CreateObject("ADODB.RecordSet")
strDBName="Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath("/test/database/test.mdb")
daoConn.Open strDBName,"",""

strSQL = "CREATE DATABASE nieuw"
set daoRecord = daoConn.Execute(strSQL)

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
RobIII schreef op 31 January 2003 @ 13:59:
Post alle relevante code es... (en dan met [code] tags a.u.b)


Ik denk niet dat het aan de code ligt.

Het is waarschijnlijk zoals ik eerder al vermoedde. Je hebt al een databank (test.mdb), dat is dus jouw DB, dus waarom zou je nog eens een create database statement willen oproepen? Je kan geen database binnen een andere database maken. Het enige wat je nu kunt doen is tabellen (of andere objecten) aanmaken binnen die databank.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Maar ik wil aan de hand van een aantal gegevens die ingevoerd worden, een nieuwe db aanmaken. Desnoods op een andere locatie... Komt het misschien omdat ik die daoConn gebruik. En dus openstaat ?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Nieuwe connectie maken ja... Zou moeten werken.
Maar dan niet eerst die open aanroepen, maar eerst de execute (createDB)...

(Zo uit mijn blote bol tenminste... Kan zijn dat 'ie eruit klapt...)

* RobIII werkt niet meer met Access sinds jaar en dag...

[ Voor 69% gewijzigd door RobIII op 31-01-2003 14:09 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Verwijderd schreef op 31 januari 2003 @ 14:05:
Maar ik wil aan de hand van een aantal gegevens die ingevoerd worden, een nieuwe db aanmaken. Desnoods op een andere locatie... Komt het misschien omdat ik die daoConn gebruik. En dus openstaat ?


Neen, het komt omdat je een connectie maakt met een reeds bestaande databank, en dat je daarbinnen nog een databank wilt aanmaken. Dat gaat niet.

Normaal gezien gaat men bij het ontwikkelen van software als volgt te werk:
- men ontwerpt een data-model, en op basis daarvan maakt men een databank
(CREATE DATABASE dus), met allerhande tabellen en relaties tsn die tabellen.
- dan schrijft men het programma zelf, dat een connectie maakt met die databank zodat gegevens kunnen bewaard, opgehaald, aangepast, ... worden.

Als je binnen uw programma code opneemt die het datamodel gaat gaan aanpassen, dan wil dit meestal zeggen dat je niet goed bezig bent. Als jij enkel gegevens wilt opslagen, waarom wil je dan nog een nieuwe databank (of zelfs tabel) laten maken door uw programma? Zorg er gewoon voor dat uw database reeds bestaat. Het enige wat je dan moet doen is zorgen voor INSERT's UPDATE's , SELECT's, ....

https://fgheysels.github.io/


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
whoami schreef op 31 January 2003 @ 14:09:

[...]


Neen, het komt omdat je een connectie maakt met een reeds bestaande databank, en dat je daarbinnen nog een databank wilt aanmaken. Dat gaat niet.

Normaal gezien gaat men bij het ontwikkelen van software als volgt te werk:
- men ontwerpt een data-model, en op basis daarvan maakt men een databank
(CREATE DATABASE dus), met allerhande tabellen en relaties tsn die tabellen.
- dan schrijft men het programma zelf, dat een connectie maakt met die databank zodat gegevens kunnen bewaard, opgehaald, aangepast, ... worden.

Als je binnen uw programma code opneemt die het datamodel gaat gaan aanpassen, dan wil dit meestal zeggen dat je niet goed bezig bent. Als jij enkel gegevens wilt opslagen, waarom wil je dan nog een nieuwe databank (of zelfs tabel) laten maken door uw programma? Zorg er gewoon voor dat uw database reeds bestaat. Het enige wat je dan moet doen is zorgen voor INSERT's UPDATE's , SELECT's, ....
Dat is een heel ander punt. Waar je overigens gelijk in hebt. Maar dat is geen antwoord op de vraag. Als hij dat wil (om welke reden dan ook), moet het toch gewoon kunnen?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Ik snap wat je bedoelt. Maar ik wil gewoon PERSE een lege database op een andere locatie aanmaken. Dat moet toch kunnen ? Hoe moet je het anders doen ? Want zo'n database wordt gecreeerd a.h.v. SQL-statements die om uitgevoerd te kunnen worden, een recordset nodig hebben.....

  • JohanDM
  • Registratie: Augustus 2002
  • Laatst online: 16-07-2021

JohanDM

Optimist

Niewe Access database aanmaken doe je via de ADO Extensions.
Met het Catalog object daaruit kun je database aanmaken en beheren.
Visual Basic:
1
2
3
   Set cat = CreateObject("ADOX.Catalog")
   cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Temp\new.mdb"
   Set con = cat.ActiveConnection

Met deze code wordt er de nieuwe database new.mdb in c:\Temp aangemaakt en wordt een open Connection object naar de nieuwe database in de con variabele gestoken.

[ Voor 4% gewijzigd door JohanDM op 31-01-2003 17:12 ]

"Two things are infinite: the universe and stupidity. And the former I'm not so sure about." -- Albert Einstein


Verwijderd

Topicstarter
JohanDM schreef op 31 januari 2003 @ 17:11:
Niewe Access database aanmaken doe je via de ADO Extensions.
Met het Catalog object daaruit kun je database aanmaken en beheren.
Visual Basic:
1
2
3
   Set cat = CreateObject("ADOX.Catalog")
   cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Temp\new.mdb"
   Set con = cat.ActiveConnection

Met deze code wordt er de nieuwe database new.mdb in c:\Temp aangemaakt en wordt een open Connection object naar de nieuwe database in de con variabele gestoken.
Thanks ! Dit bedoelde ik.... :)

Verwijderd

Topicstarter
Nu zit ik met het volgende....Wanneer ik een DB aanmaak op bovenstaande manier, en deze vervolgens open, krijg ik de volgende foutmelding :

"Onbekende database indeling". :(

  • Wokkels
  • Registratie: Juli 2000
  • Laatst online: 22-07 06:59

Wokkels

Het lekkerste zoutje

Ik weet het niet zeker hoor, maar ik denk dat je eerst nog een tabel mag aanmaken voordat je hem daadwerkelijk kan gebruiken.

probeer eens:
code:
1
2
3
4
5
6
Dim objFirstTable 
Set objFirstTable = Server.CreateObject("ADOX.Table")
objFirstTable.Name = "NewADOX"
objFirstTable.Columns.Append "CustID", adInteger
objFirstTable.Columns.Append "CustName", adVarWChar, 30
objFirstTable.Keys.Append "PK_CustID", 1, "CustID"


enz.enz....
ik raad je aan om http://www.4guysfromrolla.com/webtech/013101-1.shtml eens door te lezen.

succses

Permanent wintericon!


Verwijderd

Topicstarter
Ik zal es gaan kijken daar....thanks !
Pagina: 1