19. november 2004 - 23:49Der er
14 kommentarer og 1 løsning
Indtaste data i relaterede tabeller
Hej
Jeg har en Access-database med to tabeller. De to tabeller hedder tbl_lemma og tbl_equiv. De to tabeller har en en-til-mange relation via felterne id_lemma og fr_lemma. Feltet id_lemma er primærnøgle i tabellen tbl_lemma og feltet fr_lemma er fremmednøglen i tabellen tbl_equiv og er af datatypen tal.
Det hele virker fint, når jeg indtaster data direkte i databasen via en formular med en underformular. Når jeg gør det, indsætter databasen automatisk et tal i feltet fr_lemma.
Det virker dog ikke, når jeg forsøger at indtaste data via en HTML-formular og en tilhørede ASP-fil. Der bliver skrevet ned i alle ønskede felter, men det tal, der automatisk skal indsættes i feltet fr_lemma (og som skaber en-til-mange-relationen i databasen) bliver IKKE automatisk indsat, når jeg indtaster data via mine HTML/ASP-formularer. Jeg får ingen fejlmeddelelse.
on error resume next conn.Execute sql,recaffected if err<>0 then Response.Write("<h3>Desværre - det lykkedes ikke at indtaste en artikel!</h3>") else Response.Write("<h3>Sådan - artikel indtastet!</h3><br><a href=http://www.xxxxx.dk/xxxxxxx.htm>Indtast ny artikel?</a><br>") end if conn.close %>
Er der nogen, der har et forslag - jeg har bakset med det i ufattelig lang tid nu og som ASP-nybegynder er jeg på bar bund?
Du får ingen fejl, da du har skrevet on errer resume next, dette gør at den ikke viser, hvis der måtte være en fejl.
Fejlen er sikkert, at du glemmer at gemme indhold i det relaterede felt fr_lemma. Du er nødt til at få id-nummeret fra den første indsættelse, og gemme det i det relaterede felt. Ellers er de to poster jo ikke relaterede.
Jeg kan stadig ikke få det til at virke. Har også læst alle de andre indlæg om @@IDENTITY. Jeg har forsøgt at lave en opbygning som i artiklen, men er som sagt nybegynder. Får følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.
Mismatched CommandTypeEnum value When opening a recordset you can pass an optional CommandTypeEnum value (eg adCmdText, adCmdTable or adCmdStoredProc) to ADO to help it identify the source of your data. If you choose to specify a database table as your data source, but pass the CommandTypeEnum value for adCmdText, then you will receive the following error message. Either change the CommandTypeEnum to adCmdTable or adCmdTableDirect -or- use an SQL query as the source of your recordset.
hmmm, en anden løsning som jeg er sikke på virker SQL = "INSERT into tbl_lemma........" conn.execute SQL SQL="SELECT @@IDENTITY as lid" set MyLem = conn.execute SQL lemmaid=MyLem("lid") SQL = "INSERT INTO tbl_equiv... (lemmaid,etandet felt...) VALUES ("&lemmaid&",....)
Håber du kan se ideen, det er nogen gange nødvendigt at fyre dem af en ad gangen
Der mangler et " til sidst. Sådan som du har skrevet det, betyder det, at alle felterne i databasen er af typen tal. Skulle der være et felt som er at typen tekst, skal du istedet skrive ' omkring feltet. Altså SQL="INSERT INTO tbl_lemma (lemma, dkclass, dkmorph, dksyn, dkdef, dkex, dkcol, dkref, author, validation)" VALUES ('" & lemma & "','" & dkclass & "......... men hvis alle felterne er ta, så er det fint
OK - alle felter er af typen tekst/notat - undtagen talfeltet fr_lemma. Jeg har rettet det hele igennem - men nu kommer den med en syntaksfejl...... hmmmmm:
Microsoft VBScript compilation error '800a03ea' Syntax error /testADD1.asp, line 30
SQL="INSERT INTO tbl_lemma (lemma, dkclass, dkmorph, dksyn, dkdef, dkex, dkcol, dkref, author, validation) VALUES ('"&lemma&"','"&dkclass&"','"&dkmorph&"','"&dksyn&"','"&dkdef&"','"&dkex&"','"&dkcol&"','"&dkref&"','"&author&"','"&validation&'")" ------------------------------------------------------------------------------------- any ideas?
set MyLem = conn.execute SQL -------------------------^
Linje 33 ser stadig ud som i indlæg af 22/11-2004 18:16:45.....
alle forslag/slag over næsen eller hån er velkomne :)))
Synes godt om
Ny brugerNybegynder
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.