02. august 2019 - 23:13
Der er
9 kommentarer og
1 løsning
Gennemløb af SQL tabel og gemme data i anden tabel
Hej.
Jeg ønsker at gennemløbe records i tabel 1 og skrive tilsvarende records i tabel 2, dog kun med overførsel af værdierne på nogle af felterne.
De to tabeller findes i samme database.
Hvordan skal den kode cirka se ud.
OBS: Jeg skal desuden have slettet alle records i den førstnævnte tabel, når værdier er kopieret over i den anden tabel.
Nogen der kan hjælpe?
Slettet bruger
03. august 2019 - 10:15
#1
du skal lave en DO WHILE loop, der kører sålænge der er poster i tabel 1
så skal du gemme de data du vil i variabler.
så det bliver noget med
$data=select * from tabel1 where felt=200
når alt er gemt, og do while rammer slutningen af tabel1, skal variablerne skrives tilbage til tabel2
$data2=insert into tabel2
dette er det grundlæggende
https://www.plus2net.com/asp-tutorial/sql-display.php
Slettet bruger
03. august 2019 - 10:45
#3
dette er tæt på hvad du søger
DO WHILE NOT rs.EOF
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;
rs.MoveNext
LOOP
03. august 2019 - 11:40
#4
Sidwave har fat i noget af det rigtige, men du behøver nok kun at lave et SQL-kald for at overføre alle værdierne fra den ene til den anden tabel.
INSERT INTO tabel2(felt1,felt2,felt3)
SELECT feltA, feltB, feltC
FROM tabel1
Er der betingelser for hvilke rækker du vil overføre, kan du blot tilføje en WHERE (som Sidwave også illustrerer).
03. august 2019 - 12:33
#5
Jeg har fået lavet nedenstående, hvor det faktisk virker, dog bortset fra at jeg ikke sletter posteringer i source-tabellen endnu.
Men jeg synes ikke det er optimalt, hvordan det er lavet, når man skal køre Select af flere omgange.
Jeg har egentlig brug for at kunne tage hver enkelt record for sig og gøre de ting ved den som er nødvendigt. Måske med noget While Do eller IF Then. Kan nogen hjælpe mig med hvordan min kode skal se ud?
protected void BogførPoster(object sender, EventArgs e)
{
using (SqlConnection SqlCon = new SqlConnection(connectionString))
{
SqlCon.Open();
String query = "INSERT INTO LedTrans (Bilag, Dato, Konto, Beløb, Momskode, MomsBeløb, Tekst) " +
"SELECT Bilag, Dato, Konto, Beløb*.8, Momskode, Beløb*.2, Tekst FROM Kladdeliste WHERE Momskode='I25'";
SqlCommand sqlCmd = new SqlCommand(query, SqlCon);
sqlCmd.ExecuteNonQuery();
String query2 = "INSERT INTO LedTrans (Bilag, Dato, Konto, Beløb, Momskode, MomsBeløb, Tekst) " +
"SELECT Bilag, Dato, Konto, Beløb, Momskode, NULL, Tekst FROM Kladdeliste WHERE Momskode=''";
SqlCommand sqlCmd2 = new SqlCommand(query2, SqlCon);
sqlCmd2.ExecuteNonQuery();
String query3 = "INSERT INTO LedTrans (Bilag, Dato, Konto, Beløb, Momskode, MomsBeløb, Tekst) " +
"SELECT Bilag, Dato, ModKonto, Beløb*-1, '', NULL, Tekst FROM Kladdeliste";
SqlCommand sqlCmd3 = new SqlCommand(query3, SqlCon);
sqlCmd3.ExecuteNonQuery();
}
}
03. august 2019 - 15:34
#8
Hvis det du vil er illustreret i din egen kode fra #5, så er det mere optimalt, at du laver een streng med alle tre SQL-sætninger (hver sætning adskilt af semikolon) og kalder ExecuteNonQuery på samme måde som har gjorde i dit eget eksempel.
Hvis din kode ikke illustrerer dit formål, kunne det være en idé, at du beskrev, hvad du rent faktisk gerne ville have løst... :-)