|
| at kopiere en tabelpost Fra : Christian M. Nielsen |
Dato : 24-08-04 18:55 |
|
Hej.
Hvordan ser koden ud for at kopiere en post i en Access tabel og indsætte
kopien ind i samme tabel med en enkelt rettelse?
Et eksempel.
tabellen har 8 felter hvor 1 er autonummerering kaldet ArticleID
jeg vil gerne kopiere artikel med autonummer 500 (ArticleID = 500) og rette
data i [felt6] hvorefter den skal gemmes som en ny post.
Jeg kan ikke gennemskue hvordan jeg får det gjort. Hvis min forklaring ikke
er tydelig nok, skal jeg nok prøve at forklare nærmere.
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.
| |
Jonas Schmeltz Aaber~ (24-08-2004)
| Kommentar Fra : Jonas Schmeltz Aaber~ |
Dato : 24-08-04 19:20 |
|
"Christian M. Nielsen" <look.for.it@my.webpage> skrev i en meddelelse
news:412b810a$0$25973$ba624c82@nntp03.dk.telia.net...
> Hvordan ser koden ud for at kopiere en post i en Access tabel og indsætte
> kopien ind i samme tabel med en enkelt rettelse?
>
> Et eksempel.
>
> tabellen har 8 felter hvor 1 er autonummerering kaldet ArticleID
> jeg vil gerne kopiere artikel med autonummer 500 (ArticleID = 500) og
rette
> data i [felt6] hvorefter den skal gemmes som en ny post.
>
> Jeg kan ikke gennemskue hvordan jeg får det gjort. Hvis min forklaring
ikke
> er tydelig nok, skal jeg nok prøve at forklare nærmere.
Først kan du jo åbne et recordset og finde post nr. 500 og alle data.
Derefter kan du indsætte en ny med de pågældende data.
Eks.:
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ="&Server.MapPath("../sti/til/database.mdb")
strSQL_Select = "SELECT * FROM Tabel WHERE ArticleID = 500"
Set rs = myConn.Execute(strSQL_Select)
If Not (rs.BOF OR rs.EOF) Then
strTitel = rs("ArticleTitle")
strForfatter = rs("ArticleAuthor")
...
strArtikel = rs("ArticleContent")
rs.Close()
Set rs = Nothing
strSQL_Insert = "INSERT INTO Tabel (Felt1, Felt2,..FeltN) VALUES ('" &
strTitel & "','" & strForfatter & "',...'" & strArtikel & "')"
myConn.Execute(strSQL_Insert)
End If
Set myConn = Nothing
Jeg har ikke navngivet tabellen eller felter, men håber du selv kan overskue
det og ændre.
- Ellers; spørg!
MVH Jonas (aka Juke)
| |
Jens Gyldenkærne Cla~ (24-08-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 24-08-04 22:50 |
|
Christian M. Nielsen skrev:
> Hvordan ser koden ud for at kopiere en post i en Access tabel
> og indsætte kopien ind i samme tabel med en enkelt rettelse?
Du skal have fat i en INSERT-sætning, med en select som værdi-
kilde.
> tabellen har 8 felter hvor 1 er autonummerering kaldet
> ArticleID jeg vil gerne kopiere artikel med autonummer 500
> (ArticleID = 500) og rette data i [felt6] hvorefter den skal
> gemmes som en ny post.
INSERT INTO tabelnavn (felt2, felt3, felt4, felt5, felt6)
SELECT felt2, felt3, felt4, felt5, 'Ny værdi til felt6'
FROM tabelnavn
WHERE idfelt = 500
(sæt selv de sidste par felter på).
Bemærk at id-feltet ikke må forekomme i insert-listen (autonummeret
genererer databasen selv).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Christian M. Nielsen (25-08-2004)
| Kommentar Fra : Christian M. Nielsen |
Dato : 25-08-04 19:45 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns954FF25EAAFD2jcdmfdk@gyrosmod.cybercity.dk...
> Christian M. Nielsen skrev:
>
> > Hvordan ser koden ud for at kopiere en post i en Access tabel
> > og indsætte kopien ind i samme tabel med en enkelt rettelse?
>
> Du skal have fat i en INSERT-sætning, med en select som værdi-
> kilde.
Jeg har set på både dit og Jonas forslag. Jonas kan jeg godt få til at
virke, men dit volder lidt problemer. Jeg har det med i en funktion, der
skal udføre kopien.
Jeg får denne fejl:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error. in query expression
'SELECT ArticleHeader'.
En udskrift af strSQLArticleCopy ses herunder: (jeg kan godt se at der ikke
hentes værdier ud, men jeg er lidt på bar bund med hvordan det skal skruges
sammen. Jeg har prøvet forskellige måder, men ingen med det ønskede
resultat.)
INSERT INTO tblArticle (ArticleHeader, ArticleData, ArticleMenuHeaderID,
ArticleTemplateID, ArticleListOrder, ArticleDate, ArticleSubID,
AdminUserLevel, ArticleTeaser, ArticleListInSitemap) values ( SELECT
ArticleHeader, ArticleData, ArticleMenuHeaderID, ArticleTemplateID,
ArticleListOrder, ArticleDate, ArticleSubID, AdminUserLevel, ArticleTeaser,
ArticleListInSitemap FROM tblArticle WHERE ArticleID =1)
Funktionen jeg bruger.
DIM strSQLArticleCopy, oRsArticleCopy
strSQLArticleCopy = "INSERT INTO tblArticle (ArticleHeader, ArticleData,
ArticleMenuHeaderID, ArticleTemplateID, ArticleListOrder, ArticleDate,
ArticleSubID, AdminUserLevel, ArticleTeaser, ArticleListInSitemap) values
( SELECT ArticleHeader, ArticleData, ArticleMenuHeaderID, ArticleTemplateID,
ArticleListOrder, ArticleDate, ArticleSubID, AdminUserLevel, ArticleTeaser,
ArticleListInSitemap FROM tblArticle WHERE ArticleID ="& intArticleID &")"
Set oRsArticleCopy = openRecordset(strSQLArticleCopy)
END Function 'ArticleCopy
tblArticle er tabellen der skal kopieres fra.
ArticleID er posten der skal kopieres.
Jeg har endnu ikke skiftet det felt ud der skal rettes, det kan jeg godt
finde ud af når jeg har fået kopieringen til at virke.
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.
| |
Jens Gyldenkærne Cla~ (26-08-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 26-08-04 09:43 |
|
Christian M. Nielsen skrev:
> Jeg har set på både dit og Jonas forslag. Jonas kan jeg godt
> få til at virke, men dit volder lidt problemer.
Problemet er at du har indsat VALUES hvor det ikke hører hjemme.
> INSERT INTO tblArticle (ArticleHeader, ArticleData,
> ArticleMenuHeaderID, ArticleTemplateID, ArticleListOrder,
> ArticleDate, ArticleSubID, AdminUserLevel, ArticleTeaser,
> ArticleListInSitemap) values ( SELECT ArticleHeader,
Der skal ikke bruges VALUES når du bruger SELECT i en INSERT-
sætning. Se evt. det eksempel jeg gav i sidste indlæg - bemærk at
der _ikke_ står VALUES nogen steder.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Christian M. Nielsen (26-08-2004)
| Kommentar Fra : Christian M. Nielsen |
Dato : 26-08-04 10:21 |
|
"Jens Gyldenkærne Clausen"
> Problemet er at du har indsat VALUES hvor det ikke hører hjemme.
>
>
> > INSERT INTO tblArticle (ArticleHeader, ArticleData,
> > ArticleMenuHeaderID, ArticleTemplateID, ArticleListOrder,
> > ArticleDate, ArticleSubID, AdminUserLevel, ArticleTeaser,
> > ArticleListInSitemap) values ( SELECT ArticleHeader,
>
> Der skal ikke bruges VALUES når du bruger SELECT i en INSERT-
> sætning. Se evt. det eksempel jeg gav i sidste indlæg - bemærk at
> der _ikke_ står VALUES nogen steder.
Det havde jeg også prøvet først, men fik en anden fejl ( se nedenunder)
Nu ser koden ud på denne måde:
Function ArticleCopy
INSERT INTO tblArticle (ArticleHeader, ArticleData, ArticleMenuHeaderID,
ArticleTemplateID, ArticleListOrder, ArticleDate, ArticleSubID,
AdminUserLevel, ArticleTeaser, ArticleListInSitemap)
SELECT ArticleHeader, ArticleData, ArticleMenuHeaderID, ArticleTemplateID,
ArticleListOrder, ArticleDate, ArticleSubID, AdminUserLevel, ArticleTeaser,
ArticleListInSitemap
FROM tblArticle
WHERE ArticleID ="& intArticleID &"
END Function 'ArticleCopy
med følgende fejlmeddelelse.
Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/web5/www/admin/article.asp, line 75, column 12
INSERT INTO tblArticle (ArticleHeader, ArticleData, ArticleMenuHeaderID,
ArticleTemplateID, ArticleListOrder, ArticleDate, ArticleSubID,
AdminUserLevel, ArticleTeaser, ArticleListInSitemap)
-----------^
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.
| |
Jens Gyldenkærne Cla~ (26-08-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 26-08-04 10:21 |
|
Jens Gyldenkærne Clausen skrev:
> Der skal ikke bruges VALUES når du bruger SELECT i en INSERT-
> sætning.
- og mens vi er ved det: der skal heller ikke paranteser om select-
delen. Brug eksemplet i forrige indlæg som skabelon.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Jens Gyldenkærne Cla~ (26-08-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 26-08-04 10:41 |
|
Christian M. Nielsen skrev:
> WHERE ArticleID ="& intArticleID &"
Hvad laver det sidste &" herover?
Det er formentlig det der giver fejlen, fordi du åbner en streng
uden at lukke den igen. Hvis ArticleID er et talfelt, behøver du
ikke at have noget efter værdien:
WHERE ArticleID =" & intArticleID
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Christian M. Nielsen (26-08-2004)
| Kommentar Fra : Christian M. Nielsen |
Dato : 26-08-04 10:49 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns955176E652857jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Christian M. Nielsen skrev:
>
> > WHERE ArticleID ="& intArticleID &"
>
> Hvad laver det sidste &" herover?
Det var min fejl at jeg ikke havde fået slettet &'erne. De stammede fra mit
tidligere forsøg. Fejlen er dog den samme.
Koden er nu
Function ArticleCopy
INSERT INTO tblArticle (ArticleHeader, ArticleData, ArticleMenuHeaderID,
ArticleTemplateID, ArticleListOrder, ArticleDate, ArticleSubID,
AdminUserLevel, ArticleTeaser, ArticleListInSitemap)
SELECT ArticleHeader, ArticleData, ArticleMenuHeaderID, ArticleTemplateID,
ArticleListOrder, ArticleDate, ArticleSubID, AdminUserLevel, ArticleTeaser,
ArticleListInSitemap
FROM tblArticle
WHERE ArticleID = intArticleID
END Function 'ArticleCopy
Fejlmeddelelse
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/web5/www/admin/article.asp, line 75, column 12
INSERT INTO tblArticle (ArticleHeader, ArticleData, ArticleMenuHeaderID,
-----------^
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.
| |
Christian M. Nielsen (26-08-2004)
| Kommentar Fra : Christian M. Nielsen |
Dato : 26-08-04 10:55 |
|
"Christian M. Nielsen" <look.for.it@my.webpage> wrote in message
news:412db227$0$25973$ba624c82@nntp03.dk.telia.net...
> INSERT INTO tblArticle (ArticleHeader, ArticleData, ArticleMenuHeaderID,
> ArticleTemplateID, ArticleListOrder, ArticleDate, ArticleSubID,
> AdminUserLevel, ArticleTeaser, ArticleListInSitemap)
> SELECT ArticleHeader, ArticleData, ArticleMenuHeaderID, ArticleTemplateID,
> ArticleListOrder, ArticleDate, ArticleSubID, AdminUserLevel,
ArticleTeaser,
> ArticleListInSitemap
> FROM tblArticle
> WHERE ArticleID = intArticleID
Det skal siges at forespørgslen kører dint i access hvis man indsætter den
direkte i en forspørgsel.
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.
| |
Jens Gyldenkærne Cla~ (26-08-2004)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 26-08-04 11:19 |
|
Christian M. Nielsen skrev:
> Det skal siges at forespørgslen kører dint i access hvis man
> indsætter den direkte i en forspørgsel.
Jep - problemet er nemlig at du skriver sql-kode direkte i din asp-
fil. Den går ikke.
Sql-sætninger skal lægges i en tekstvariabel og overføres til
databasen via et connectionobject. Her er et generelt eksempel:
sql = "SELECT foo FROM bar"
set rs = conn.execute(sql)
- når det drejer sig om en handlingsforespørgsel, er der ingen
grund til at anvende et postsæt som returvariabel. Her kan man blot
skrive:
sql = "INSERT INTO foo (a, b) SELECT a, b FROM bar"
conn.execute(sql)
I begge tilfælde skal conn være et gyldigt connectionobjekt - se
evt. html.dk's asp-tutorial for hjælp hertil.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Christian M. Nielsen (26-08-2004)
| Kommentar Fra : Christian M. Nielsen |
Dato : 26-08-04 11:25 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns95517D4C452C6jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Christian M. Nielsen skrev:
>
> > Det skal siges at forespørgslen kører dint i access hvis man
> > indsætter den direkte i en forspørgsel.
>
> Jep - problemet er nemlig at du skriver sql-kode direkte i din asp-
> fil. Den går ikke.
>
> Sql-sætninger skal lægges i en tekstvariabel og overføres til
> databasen via et connectionobject.
Jeg var ved at spekulere på samme ting, men dit svar kom mig i forkøbet.
Jeg forsøger mig lidt frem og vender tilbage hvis jeg løber ind i flere
problemer.
Mange tak for hjælpen og din udholdenhed
--
Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.
| |
|
|