Sigtbarheden i detailbranchen er lavere end nogensinde før.
13. juni 2024
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
DO WHILE NOT rs.EOF INSERT INTO table2 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table1 WHERE condition; rs.MoveNext LOOP
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(); } }
Du kan godt lave multistatements og så bare køre dem alle med et kald. Altså i formatet vist herunder.
INSERT INTO table2 (...) SELECT ... FROM table1 WHERE ...clause1...; INSERT INTO table2 (...) SELECT ... FROM table1 WHERE ...clause2...; INSERT INTO table2 (...) SELECT ... FROM table1 WHERE ...clause3...;
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... :-)
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.