Avatar billede extream Nybegynder
22. januar 2004 - 16:10 Der er 9 kommentarer og
1 løsning

insert into flere tabeller

Hvordan er det nu man insetter i flere tabeller der joiner hinanden:
Set Conn=Server.CreateObject("ADODB.Connection")
    Set Rs=Server.CreateObject("ADODB.recordset")
    Conn.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="&Server.MapPath("../../../db/A2C.mdb")

    hTekst = replace(request.querystring( "hTekst" ), "'", "''")
    choice = replace(request.querystring( "choice" ), "'", "''")
    art = replace(request.querystring( "art" ), "'", "''")
    alt = replace(request.querystring( "alt" ), "'", "''")
    src = replace(request.querystring( "src" ), "'", "''")
    col1Tekst = replace(request.querystring( "col1Tekst" ), "'", "''")
    col2Tekst = replace(request.querystring( "col2Tekst" ), "'", "''")
    newsTekst = replace(request.querystring( "newsTekst" ), "'", "''")
    newsLink = replace(request.querystring( "newsLink" ), "'", "''")
    online = replace(request.querystring( "online" ), "'", "''")
    created = now
    lastTime = now
   




    varTekst = Request.querystring("tekst")
    varTekst = replace(request.querystring("tekst"), "'", "''")

   
    strSQL = "Insert into tabel1 (hTekst,art) values" & "('"&hTekst&"','"&art&"')"
    strSQL = "Insert into tabel2 (hTekst,art) values" & "('"&hTekst&"','"&art&"')"
    Conn.Execute(strSQL)
    conn.close   
    Set Conn = Nothing
    response.redirect ("../CMS/tilfoj.asp?tilfoj=done")
Avatar billede extream Nybegynder
22. januar 2004 - 16:19 #1
Prøvede med en sql streng men den går ikke
strSQL = "Insert into (((heading
LEFT JOIN flash ON heading.headingID=flash.headingID)
LEFT JOIN main1 ON flash.flashID=main1.flashID)
LEFT JOIN main2 ON main1.main1ID=main2.main1ID)
LEFT JOIN news ON news.newsID=heading.newsID
(hTekst,art osv.) values" & "('"&hTekst&"','"&art&"' osv)"
Avatar billede eagleeye Praktikant
22. januar 2004 - 16:58 #2
dette går ikke:
    strSQL = "Insert into tabel1 (hTekst,art) values" & "('"&hTekst&"','"&art&"')"
    strSQL = "Insert into tabel2 (hTekst,art) values" & "('"&hTekst&"','"&art&"')"
    Conn.Execute(strSQL)

fordi den overskriver en føste strSQL, men du kan lave det sådan her:

    strSQL = "Insert into tabel1 (hTekst,art) values" & "('"&hTekst&"','"&art&"')"
    Conn.Execute(strSQL)
    strSQL = "Insert into tabel2 (hTekst,art) values" & "('"&hTekst&"','"&art&"')"
    Conn.Execute(strSQL)
Avatar billede extream Nybegynder
22. januar 2004 - 18:28 #3
Den giver følgende fejl:
"Du kan ikke tilføje eller ændre en post, fordi der kræves en relateret post i tabellen "news".
Avatar billede extream Nybegynder
22. januar 2004 - 18:30 #4
Jeg køre Access db. og har lavet relationer mellem tabellerne her. Jeg skal derfor bruge et script som kan insætte data i alle tabellerne på engang.
Avatar billede soes Nybegynder
22. januar 2004 - 19:14 #5
har du prøvet at bytte rundt på dine to sætninger?
Avatar billede extream Nybegynder
25. januar 2004 - 13:47 #6
Undskyld at jeg først er tilbage nu men har haft travlt med arbejde
Ja jeg har prøvet at bytte om på tabellerne og lavet strengene i den rækkefølge som de joiner hinanden. Men den giver følgende fejl:

Du kan ikke tilføje eller ændre en post, fordi der kræves en relateret post i tabellen "heading".
/asp/A2C/www/cms/news/upload.asp, line 26

kode:
strSQL = "Insert into heading (hTekst,art) values" & "('"&hTekst&"','"&art&"')"
    Conn.Execute(strSQL)
    strSQL = "Insert into flash (alt,src) values" & "('"&alt&"','"&src&"')"
    Conn.Execute(strSQL)
    strSQL = "Insert into main1 (col1Tekst) values" & "('"&col1Tekst&"')"
    Conn.Execute(strSQL)
    strSQL = "Insert into main2 (col2Tekst) values" & "('"&col2Tekst&"')"
    Conn.Execute(strSQL)
    strSQL = "Insert into news (newsTekst,newsLink,online,created,lastTime) values" & "('"&newsTekst&"','"&newsLink&"','"&online&"','"&created&"','"&lastTime&"')"
    Conn.Execute(strSQL)
    conn.close   
    Set Conn = Nothing
Avatar billede extream Nybegynder
25. januar 2004 - 13:54 #7
Jeg skal have indsat data hvor heading.headingID=fladh.headingID hvordan gør man det?
Avatar billede eagleeye Praktikant
25. januar 2004 - 23:32 #8
umibbelbart ville tror du er nød til at hendte det sidste indsatte ID fra heading og så bruge det i SQL hvor du indsætter i flash:


    strSQL = "Insert into heading (hTekst,art) values" & "('"&hTekst&"','"&art&"')"
    Conn.Execute(strSQL)
    strSQL = "SELECT @@IDENTITY FROM heading"
    Set RS = Conn.Execute(strSQL)
    nytID = RS(0)
    strSQL = "Insert into flash (alt,src,headingID) values" & "('"&alt&"','"&src&"',"&nyID&")"
    Conn.Execute(strSQL)

osv..

hvis nytID bliver 0 så prøv:

    strSQL = "Insert into heading (hTekst,art) values" & "('"&hTekst&"','"&art&"')"
    Conn.Execute(strSQL)
    strSQL = "SELECT max(id) FROM heading"
    Set RS = Conn.Execute(strSQL)
    nytID = RS(0)
    strSQL = "Insert into flash (alt,src,headingID) values" & "('"&alt&"','"&src&"',"&nyID&")"
    Conn.Execute(strSQL)
Avatar billede extream Nybegynder
26. januar 2004 - 10:10 #9
Så virker det squ, biksede dog lidt med nyID den hed nytID. Thi. Vil gerne vide om det er den korrekte måde at gøre dette på? Er igang med et CMS system. Er det en fordel ikke at have referentiel integritet i db?
Avatar billede eagleeye Praktikant
26. januar 2004 - 18:07 #10
Ok, ja det var en smutter, der mangler et t :)
Hvis @@IDENTITY virkede så er det den korrekte måde at hendte ID på.

Jeg bruger det ikke, for man skal selv sætte id's ind. Det kan være en fordel når man bruger query builderen i Access at havde dem så det nemlig hurtigt at lave nogle sql-sætninger med flere JOIN's.
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
Kurser inden for grundlæggende programmering

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