|
| kopiere en række fra en tabel til en anden Fra : Simon K |
Dato : 17-09-03 15:45 |
|
af og til, får jeg brug for at kopiere en række fra en tabel til en anden.
Denne rækkes antal af kolonner kan dog variere (men ja, begge tabeller har
altid det samme antal, med samme prædikater)
Er det ikke muligt at lave en løkke med noget lign:
For T 1 To 20
StrSQL1 = "SELECT * FROM originalplan WHERE nr = " & T & ""
Set rs = Conn.Execute(strSQL1)
StrSQL1 = "INSERT INTO andenplan * = " & rs(*) & ""
Conn.Execute(strSQL1)
Next
Så behøver jeg ikke først at finde ud af hvor man kolonner der og hvad de
hedder og hvad deres værdier er. Det må da findes..?
pft. /Simon K
| |
Peter Lykkegaard (17-09-2003)
| Kommentar Fra : Peter Lykkegaard |
Dato : 17-09-03 21:16 |
|
Simon K wrote:
> af og til, får jeg brug for at kopiere en række fra en tabel til en
> anden. Denne rækkes antal af kolonner kan dog variere (men ja, begge
> tabeller har altid det samme antal, med samme prædikater)
Du burde kunne kopiere dataene direkte over
Database?
> Er det ikke muligt at lave en løkke med noget lign:
>
Jow egenskaberne på feltet hedder name og value
Men det vil svare til at du henter en øl ad gangen hos Duborg i stedet for
at køre een gang og hente de par rammer du skal bruge...
mvh/Peter Lykkegaard
| |
Simon K (17-09-2003)
| Kommentar Fra : Simon K |
Dato : 17-09-03 23:01 |
|
"Peter Lykkegaard" <polonline@hotmail.dk> wrote in message
news:3f68c20c$0$32450$edfadb0f@dread16.news.tele.dk...
> Simon K wrote:
> > af og til, får jeg brug for at kopiere en række fra en tabel til en
> > anden. Denne rækkes antal af kolonner kan dog variere (men ja, begge
> > tabeller har altid det samme antal, med samme prædikater)
>
> Du burde kunne kopiere dataene direkte over
> Database?
Men det skal gøres via en asp-side. Eller forstår jeg ikke hvad du mener?
> > Er det ikke muligt at lave en løkke med noget lign:
> >
> Jow egenskaberne på feltet hedder name og value
> Men det vil svare til at du henter en øl ad gangen hos Duborg i stedet
for
> at køre een gang og hente de par rammer du skal bruge...
Vil du så ikke lige vise mig hvordan man kopierer en blok - det er ikke hele
tabellen der skal kopieres kun en mængde id der lægger mellem x og y
pft. Venlig hilsen (lidt mere forvirret)Simon K
> mvh/Peter Lykkegaard
| |
Peter Lykkegaard (18-09-2003)
| Kommentar Fra : Peter Lykkegaard |
Dato : 18-09-03 06:57 |
|
"Simon K" <simonkib@hotmail.com> wrote in message
news:3f68d99c$0$7234$ba624c82@nntp02.dk.telia.net...
> Vil du så ikke lige vise mig hvordan man kopierer en blok - det er ikke
hele
> tabellen der skal kopieres kun en mængde id der lægger mellem x og y
>
Jow, hvis du fortæller hvilken databaseversion du arbejder med
Er det Access, MSSQL, mySQL, andet?
Noget ala
Insert into AnotherTable From MyTable Where ID between x and y
mvh/Peter Lykkegaard
| |
Simon K (18-09-2003)
| Kommentar Fra : Simon K |
Dato : 18-09-03 15:50 |
|
> > Vil du så ikke lige vise mig hvordan man kopierer en blok - det er ikke
hele
> > tabellen der skal kopieres kun en mængde id der lægger mellem x og y
> Noget ala
> Insert into AnotherTable From MyTable Where ID between x and y
Ok, jeg kører med Access 2000
Det ligner præcis hvad jeg leder efter...
| |
Peter Lykkegaard (18-09-2003)
| Kommentar Fra : Peter Lykkegaard |
Dato : 18-09-03 19:38 |
|
Simon K wrote:
>>> Vil du så ikke lige vise mig hvordan man kopierer en blok - det er
>>> ikke hele tabellen der skal kopieres kun en mængde id der lægger
>>> mellem x og y
>> Noget ala
>> Insert into AnotherTable From MyTable Where ID between x and y
> Ok, jeg kører med Access 2000
> Det ligner præcis hvad jeg leder efter...
Jeg lavede lige et hurtigt eksempelt copy'n'pasted fra Access's Query
designer
INSERT INTO Vare2 ( varenummer, listepris )
SELECT Vare.varenummer, Vare.listepris
FROM Vare
WHERE (((Vare.varenummer) Between 1101 And 1102));
mvh/Peter Lykkegaard
| |
Simon K (21-09-2003)
| Kommentar Fra : Simon K |
Dato : 21-09-03 20:32 |
|
> INSERT INTO Vare2 ( varenummer, listepris )
> SELECT Vare.varenummer, Vare.listepris
> FROM Vare
> WHERE (((Vare.varenummer) Between 1101 And 1102));
>
Arh øv, nu var jeg lige så tæt på at have funktionen færdig og så kommer jeg
i tanke om at jeg skal UPDATE vare2 istedet for bare at indsætte. Hvordan
får jeg ovenstående sætning transformeret til en UPDATE sætning istedet?
Jeg skal sørge for at få lavet en WHERE statement i både vare2 og vare.
Kan du også klare den
pft.
Venlig hilsen Simon k
| |
Jens Gyldenkærne Cla~ (21-09-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 21-09-03 21:21 |
|
Simon K skrev:
> Arh øv, nu var jeg lige så tæt på at have funktionen færdig og
> så kommer jeg i tanke om at jeg skal UPDATE vare2 istedet for
> bare at indsætte.
Helt generel updatesyntaks:
UPDATE tabelnavn
SET felt1 = værdi1, felt2 = værdi2, ...
WHERE kriteriefelt1 = 42 AND kriteriefelt2 = 117
> Hvordan får jeg ovenstående sætning transformeret til en UPDATE
Det afhænger af hvilke felter der skal opdateres og hvilke der skal
bruges til at finde posten med.
Her er en mulighed:
UPDATE Vare2
SET listepris = 42.5
WHERE varenummer = 1199
--
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
| |
Simon K (21-09-2003)
| Kommentar Fra : Simon K |
Dato : 21-09-03 23:40 |
|
"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns93FDE34B78C1Bjcdmfdk@gyrosmod.cybercity.dk...
> Simon K skrev:
>
> > Arh øv, nu var jeg lige så tæt på at have funktionen færdig og
> > så kommer jeg i tanke om at jeg skal UPDATE vare2 istedet for
> > bare at indsætte.
>
> Helt generel updatesyntaks:
>
> UPDATE tabelnavn
> SET felt1 = værdi1, felt2 = værdi2, ...
> WHERE kriteriefelt1 = 42 AND kriteriefelt2 = 117
>
>
> > Hvordan får jeg ovenstående sætning transformeret til en UPDATE
>
> Det afhænger af hvilke felter der skal opdateres og hvilke der skal
> bruges til at finde posten med.
>
> Her er en mulighed:
>
> UPDATE Vare2
> SET listepris = 42.5
> WHERE varenummer = 1199
Men jeg skal faktisk kopiere en hel blok (WHERE Dato BETWEEN x AND y) fra en
tabel til en opdatering i en anden tabel, hvor altså blokken skal indsættes
også WHERE Dato BETWEEN x AND y. Jeg skal derfor gerne have begge tabellerne
og deres WHERE statement med i min SQL-sætning.
Det er altså denne sætning jeg skal have transformeret til en UPDATE med
WHERE kriterie for begge tabeller:
INSERT INTO Tabel2 ( felt1, feltN )
SELECT Tabel1.Felt1, Tabel1.FeltN
FROM Tabel1
WHERE (((Tabel1.Dato) Between x And y))
Ved ikke helt hvad det er med alle de parenteser heller...
pft. Venlig hilsen Simon K
| |
Jens Gyldenkærne Cla~ (22-09-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 22-09-03 11:43 |
|
Simon K skrev:
> Men jeg skal faktisk kopiere en hel blok (WHERE Dato BETWEEN x
> AND y) fra en tabel til en opdatering i en anden tabel, hvor
> altså blokken skal indsættes også WHERE Dato BETWEEN x AND y.
Jeg kan ikke helt afkode hvad du mener her. Du har et antal poster
der skal opdateres. Her kommer et par spørgsmål der forhåbentlig
kan afklare noget:
1) Hvad hedder de to tabeller?
2) Findes alle de poster der skal opdateres i begge tabeller?
3) Er det kun tabel2 der skal opdateres eller skal begge tabeller
opdateres?
4) Hvilke værdier skal opdateres?
5) Hvor kommer de nye værdier (dem der skal gemmes i opdateringen)
fra?
--
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
| |
Simon K (22-09-2003)
| Kommentar Fra : Simon K |
Dato : 22-09-03 12:10 |
|
Lige først. Tabel1 og Tabel2 har præcis ens felt-navne. Tabel2 har kun
udfyldt de felter der hedder ID og Dato (nogle gange ligger der også data i
de andre felter, men så skal disse overskrives. Derfor UPDATE).
Jeg skal så hente alle data i Tabel1 der ligger mellem 2 datoer og opdatere
dem i Tabel2 mellem de 2 samme datoer.
> Jeg kan ikke helt afkode hvad du mener her. Du har et antal poster
> der skal opdateres. Her kommer et par spørgsmål der forhåbentlig
> kan afklare noget:
>
> 1) Hvad hedder de to tabeller?
De hedder tabel1 og tabel2
> 2) Findes alle de poster der skal opdateres i begge tabeller?
Ja de er ens (jeg finder dem ved at gennemgå tabel1 med en løkke og så
sortere Dato og Id fra)
> 3) Er det kun tabel2 der skal opdateres eller skal begge tabeller
> opdateres?
Kun Tabel2 med data fra Tabel1
> 4) Hvilke værdier skal opdateres?
stort set alle (alle dem jeg fandt med løkken skal opdateres)
> 5) Hvor kommer de nye værdier (dem der skal gemmes i opdateringen)
> fra?
Fra Tabel1
Håber ovenstående var den info du skal bruge for at hjælpe mig
pft. Simon K
| |
Jens Gyldenkærne Cla~ (22-09-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 22-09-03 21:09 |
|
Simon K skrev:
> Lige først. Tabel1 og Tabel2 har præcis ens felt-navne. Tabel2
> har kun udfyldt de felter der hedder ID og Dato (nogle gange
> ligger der også data i de andre felter, men så skal disse
> overskrives. Derfor UPDATE). Jeg skal så hente alle data i
> Tabel1 der ligger mellem 2 datoer og opdatere dem i Tabel2
> mellem de 2 samme datoer.
Godt.
Jeg glemte at spørge om én ting - nemlig hvilken database du
benytter.
Følgende virker i MSSQL
UPDATE d2
SET oprettet = d.oprettet,
pic1 = d.pic1,
pic2 = d.pic1
FROM dokumenter d INNER JOIN dokumenter_backup d2
ON d.dokumentID = d2.dokumentID
WHERE d.modificeret > GETDATE()
Jeg har ikke testet det i andre databaser.
NB: Det ville være lettere at læse dine svar hvis du satte en tom
linje ind mellem citater og egne afsnit.
--
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
| |
Simon K (23-09-2003)
| Kommentar Fra : Simon K |
Dato : 23-09-03 06:52 |
|
> Jeg glemte at spørge om én ting - nemlig hvilken database du
> benytter.
>
Access 2000 (det står også lidt tidligere i strengen
Kan du også klare den?
pft. Simon K
| |
Jens Gyldenkærne Cla~ (23-09-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 23-09-03 11:08 |
|
Simon K skrev:
> Kan du også klare den?
Har du prøvet med den syntaks jeg gav for MSSQL?
--
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
| |
Simon K (23-09-2003)
| Kommentar Fra : Simon K |
Dato : 23-09-03 17:52 |
|
> > Kan du også klare den?
>
> Har du prøvet med den syntaks jeg gav for MSSQL?
>
Jeg har prøvet at lave den om til mine oplysninger, men jeg kan ikke lige få
det til at funge:
"UPDATE tabel2 SET 1 = tabel1.1, 5 = tabel1.5, 7 = tabel1.7 FROM tabel1
INNER JOIN tabel1 ON tabel1.Dato = tabel2.Dato WHERE tabel1.Dato =
'23-08-2003'"
Jeg får denne fejl:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in
query expression 'tabel1.7 FROM tabel1 INNER JOIN tabel1 ON tabel1.Dato =
tabel2.Dato '.
file.asp, line 63
Men så igen, så forstår jeg ikke hele sætningen. Lige en hage, så vil gerne
have mulighed for at definere at Dato i tabel1 skal være BETWEEN Dateserial
(x,x,x) AND Dateserial (y,y,y) og Dato i tabel2 skal være BETWEEN Dateserial
(z,z,z) AND Dateserial (a,a,a)
Venlig hilsen Simon K
| |
Jens Gyldenkærne Cla~ (23-09-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 23-09-03 20:31 |
|
Simon K skrev:
> "UPDATE tabel2 SET 1 = tabel1.1, 5 = tabel1.5, 7 = tabel1.7
Jeg er ikke tryg ved tal som feltnavne, men skal ikke afvise at det
virker. Prøv evt. at escape med klammer: SET [1] = tabel1.[1]...
> FROM tabel1 INNER JOIN tabel1 ON tabel1.Dato = tabel2.Dato
Her er den under alle omstændigheder gal. Tabel1 INNER JOIN tabel1
- det sidste skal nok være tabel2.
> WHERE tabel1.Dato = '23-08-2003'"
Mine Access-kundskaber er ikke hvad de har været, men så vidt jeg
husker skal Access have # omkring datoer.
> Men så igen, så forstår jeg ikke hele sætningen. Lige en hage,
> så vil gerne have mulighed for at definere at Dato i tabel1
> skal være BETWEEN Dateserial (x,x,x) AND Dateserial (y,y,y) og
> Dato i tabel2 skal være BETWEEN Dateserial (z,z,z) AND
> Dateserial (a,a,a)
Det sidste er ikke noget problem. FROM-delen er en normal join hvor
du kan sætte kriterier på begge tabeller:
UPDATE tabel2
SET [1] = tabel1.[1], ...
WHERE tabel1.Dato BETWEEN DateSerial(x,x,x) AND DateSerial(y,y,y)
AND tabel2.Dato BETWEEN DateSerial(z,z,z) AND DateSerial(a,a,a)
--
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
| |
Simon K (25-09-2003)
| Kommentar Fra : Simon K |
Dato : 25-09-03 20:08 |
|
Hmm, jeg får stadig fejl på denne:
"UPDATE vagtplan SET [1] = originalplan.[1], [5] = originalplan.[5], [7] =
originalplan.[7] FROM originalplan INNER JOIN vagtplan ON originalplan.Dato
= vagtplan.Dato WHERE originalplan.Dato BETWEEN DateSerial(2003, 8, 22) AND
DateSerial(2003, 8, 24) AND vagtplan.Dato BETWEEN DateSerial(2003, 8, 22)
AND DateSerial(2003, 8, 24)"
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in
query expression 'originalplan.7 FROM originalplan INNER JOIN vagtplan ON
originalplan.Dato = vagtplan.Dato'.
/Mvh Simon K
| |
Jens Gyldenkærne Cla~ (26-09-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 26-09-03 10:47 |
|
Simon K skrev:
> Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
> [Microsoft][ODBC Microsoft Access Driver] Syntax error
> (missing operator) in query expression 'originalplan.7 FROM
> originalplan INNER JOIN vagtplan ON originalplan.Dato =
> vagtplan.Dato'.
Måske understøtter Access ikke UPDATE med FROM. Prøv at spørge i
<news:dk.edb.database.ms-access>.
--
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
| |
|
|