Fout in velddefinitie

Status
Niet open voor verdere reacties.

BromsnorII

Gebruiker
Lid geworden
27 sep 2006
Berichten
94
Hallo,

In een stukje VBA probeer ik met docmd.runsql en de string "create table Tabelnaam(1-6-2014 varchar(2), 2-6-2014 varchar(2), 3-6-2014 varchar(2), 4-6-2014 varchar(2), 5-6-2014 varchar(2))" een tabel aan te maken. Maar in krijg de foutboodschap syntaxisfout in velddifinitie.

Heeft iemand een idee, ik lees er waarschijnlijk overheen.

Vriendelijke dank
Sietse Keun
 
Ik zie geen veldnamen. Waar zijn die?
 
Hallo Michel

De veldnamen zijn de datums; 1-6-2014 enz. Het kan goed dat daar het probleem zit. Als ik gewoon een tabel aanmaak met deze namen als veldnaam pakt access het wel. Ik heb ook al geprobeerd om met Cstr() een string toe te kennen maar ook dat geeft geen verbetering.

Groet.
 
Ik vind het een erg slecht idee om velden te maken op deze manier; volgens mij heb je dan een heel slecht genormaliseerde tabel. Dus daar zou ik om te beginnen eens naar kijken. Ik denk dat je aan 2 velden genoeg hebt; één voor je datum en één voor de waarde.
 
Het zal ook geen schoonheidsprijs verdienen. Ik ben wat aan het experimenteren met sql en vba. En liep tegen dit probleem aan. Ik wil weten waarom dit niet werkt.
Daar komt bij; in mijn experiment wordt voor elke naam, automatisch een tabel aangemaakt met velden die datums voorstellen. Elke datum (veld) krijg een waarde die bijvoorbeeld een soort verlof voorstelt of een dienst. Met name het automatisch aanmaken van de tabel moet e.e.a. versnellen.

Dit schoffeert alle regels van een goed database dat begrijp ik. Het is puur ter lering en vermaak.

Sorry?
Sietse
 
De reden dat de veldnamen zo niet werken, is omdat ze niet als veldnaam herkend worden. Dat komt uiteraard doordat je er een berekening voor gebruikt. Zou je 01062014 als veldnaam proberen, dan zou het misschien nog wel zijn gelukt. Dus met dit soort veldnamen, moet je ze de juiste kenmerken meegeven. Dus zo: '1-6-2014' of zo: [1-6-2014].
 
In de code alles gewijzigd zodat de string aangepast wordt in ....([1-6-2014] tekst, [2-6-2014] tekst, ...... ) of de optie met 01062014. Geen van beide werkt.
Maar.. als ik een niet db aanmaak met een formulier en een knop met de simpel code;
Private Sub Knop0_Click()
sqlstring = "create table voorbeeldnaam ( 01012014 text, 02012014 text)"
DoCmd.RunSQL sqlstring

End Sub

Dan werkt het wel......

Ik zoek verder maar elke suggestie is welkom...
 
Ik heb je letterlijke code zelf even uitgeprobeerd, (hoe erg het ook tegen mijn principes indruist ;) ) en hij doet het wel degelijk met de manier zoals ik hierboven aangaf.
Code:
Private Sub Command41_Click()
Dim strSQL As String
strSQL = "Create Table Tabelnaam('1-6-2014' varchar(2), '2-6-2014' varchar(2), [3-6-2014] varchar(2), [4-6-2014] varchar(2), [5-6-2014] varchar(2))"
CurrentDb.Execute strSQL, dbFailOnError
End Sub
Enige verschil tussen de twee notaties is de veldnaam zelf. Gebruik je de quootjes, dan komt die ook in de veldnaam te staan (dus zo: '1-6-2014'). Gebruik je de rechte haken, dan krijg je alleen de datum. Bij deze variant (03062014) heb je niks nodig, die maakt hij gewoon.
Maar oh oh oh oh, waar ben je mee bezig...
 
Laatst bewerkt:
Ja. Ik heb de db in een nieuwe opzet overgetypt en jou oplossing werkt. Vraag blijft wel waarom de vorige db hardnekkig blijft met de syntaxisfout... maar je moet ook niet alles willen weten....

Superbedankt Michel. En ik beloof beterschap op den duur....:(
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan