Avatar billede monken Nybegynder
26. september 2004 - 21:58 Der er 11 kommentarer og
1 løsning

create table as (select sætning) syntaks fejl ?

Sidder med en asp side som kontakter en access database

Forbindelsen bliver skabt med følgende parametre:
ADODB.Connection
Microsoft Access Driver (*.mdb)}

Følgende SQL kommandoer køres:
       
StrTest="SELECT a.id AS catid,b.id AS linkid FROM dennis_harboe AS a, dennis_harboe_cat AS b WHERE a.category=b.name"

StrSQL ="CREATE TABLE catlink AS (" & strTest & ")"

Conn.Execute(strSQL)

StrTest er en testet sql sætning som returnerer korrekt, så fejlen ligger nok i create table as.

Serveren returnerer følgende fejl og peger på linien hvor execute udføres:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in field definition.

/test.asp, line 22


Så er spørgsmålet: er der en anden syntaks til sql og access end "create table as(select sætning) eller understøtter den simpelthen bare ikke dette?

Følgende er en generel beskrivelse af hvordan man laver tabeller ud fra select sætninger.

http://www.techonthenet.com/sql/tables/create_table2.htm
Avatar billede sjap Praktikant
26. september 2004 - 22:29 #1
Hvad hedder dine tabeller? Hvis jeg skal få hoved og hael i ovenstående, så hedder tabellerne:

a
b
dennis_harboe

Er det korrekt?
Avatar billede sjap Praktikant
26. september 2004 - 22:37 #2
SELECT sætningen ser lidt spøjs ud. Er du sikker på der ikke skal stå

SELECT a.id AS catid, b.id AS linkid
FROM a, b
WHERE (((a.category)=[b].[name]));
Avatar billede sjap Praktikant
26. september 2004 - 22:39 #3
Nåh, nu tror jeg, jeg ved hvad du mener. Prøv med

SELECT dennis_harboe.id AS catid, dennis_harboe_cat.id AS linkid
FROM dennis_harboe , dennis_harboe_cat
WHERE (((dennis_harboe.category)=dennis_harboe_cat.name));
Avatar billede monken Nybegynder
26. september 2004 - 22:42 #4
Men som nævnt virker sql sætningen allerede - select sætningen returnerer 2 kolonner som hedder catid og linkid med en masse id'er i -allerede som den står i mit spørgsmål - det er når man tilføjer "create table as(" + den sætning + ")"  så siger den syntaks fejl.
Avatar billede sjap Praktikant
26. september 2004 - 22:50 #5
Ok. Jeg blev bare lidt forvirret over navneændringer (da de jo ikke tjener noget formål).

Jeg kender ikke lige den syntax som du bruger. I Access vil en tabeloprettelse som din, normalt skrives som

SELECT a.id AS catid, b.id AS linkid INTO NytTabelNavn
FROM a, b
WHERE (((a.category)=[b].[name]));

Jeg ved ikke om det virker på din forbindelse. Det er cirka hvad jeg kan komme på, så hvis det ikke virker, er jeg nok nødt til at give op - så må du vente på, der dukker et klogere hoved op :0)
Avatar billede sjap Praktikant
26. september 2004 - 22:53 #6
I øvrigt er der nogen SQL'er der KRÆVER ; til sidst i SQL-sætningen. Det gælder normalt ikke Access, men jeg ved ikke om det også gælder på den måde som du forbindes til databasen. Det skader jo ikke at prøve.
Avatar billede sjap Praktikant
26. september 2004 - 23:00 #7
Undskyld. I farten fik jeg lige sat den forkerte kode ind ovenfor. Det skulle have været

SELECT dennis_harboe.id AS catid, dennis_harboe_cat.id AS linkid INTO NytTabelNavn
FROM dennis_harboe, dennis_harboe_cat
WHERE (((dennis_harboe.category)=dennis_harboe_cat.name));
Avatar billede monken Nybegynder
26. september 2004 - 23:05 #8
Navneændringerne (aliaserne) tjener kun det formål at de gør livet lettere - det er blandt andet en af grundene til de findes.

Tester lige INTO. Underligt den anden ikke virker (den med create table as) - jeg har brugt den ofte i oracle databaser. Og den guide jeg har postet link til i dette spørgsmål beskriver også min syntaks i generel SQL kontekst.

Hvis into virker så lav lige et svar ellers kan jeg ikke give point :-)
Avatar billede sjap Praktikant
26. september 2004 - 23:10 #9
OK. Var måske lidt hurtig med hensyn til aliaser. Du har selvfølgelig ret i, at de kan gøre livet lettere - jeg synes ikke, de gør det her, men det er jo heller ikke mig, der sidder med din programmeringsopgave.
Håber du kan få det til at virke. Ellers så plejer de tunge drenge at dukke op på hverdagene (og mugs dukker ofte også op om natten).
Avatar billede monken Nybegynder
26. september 2004 - 23:23 #10
Nej, du har ret - kommandoen er lidt for kort til at de tjener et reelt formål :-)
Avatar billede monken Nybegynder
26. september 2004 - 23:25 #11
nu har jeg trykket accepter svar 3 gange, den virker vidst ikke - prøver senere eller imorgen igen så du kan få nogle points.
Avatar billede sjap Praktikant
27. september 2004 - 00:05 #12
Du skal markere navnet - og så trykke accepter. Så skulle det virke.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester