Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


lägga till rad i en tabell i ett dataSet

Postades av 2005-05-30 10:17:24 - Tobias Gustavsson, i forum c# (c-sharp), Tråden har 7 Kommentarer och lästs av 1357 personer

Hejs!
Har problem med att lägga till en rad i ett DataSet
DataSet dsdb i koden nedan skapas och laddas med ett xml schema

DataRow wr; //deklarerar DataRow

foreach ( DataRow row in dsx.Tables[2].Rows) //itererar genom ett DataSet med data från xml-fil
{
foreach ( DataColumn col in dsx.Tables[2].Columns)
{
if (regx.IsMatch(row.ItemArray[col.Ordinal].ToString())) //om reguljära uttrycket matchar
{
wr = dsdb.Tables[0].NewRow(); //så vill jag skapa en ny rad i tomma datasetet
wr = row; //och kopiera det som finns i raden, så långt allt väl verkar det som
dsdb.Tables[0].Rows.Add(wr); //här går det fel!! "This row already belongs to another table"
}
}
}
Jag har lite svårt att hålla med om att raden wr tillhör en annan tabell... vart har jag gjort galet.

Försökte följa ett exempel jag hittade på nätet och tycker det liknar det jag gör:
http://www.c-sharpcorner.com/Code/2004/Feb/DataSetsOverview03.asp

DataRow workRow;

for (int i = 0; i <= 9; i++)
{

workRow = currentTable.NewRow();
workRow[0] = i;
workRow[1] = "CustName" + i.ToString();
currentTable.Rows.Add(workRow);
}

Plz, vad är det jag inte ser/gör/förstår??
/tobbe


Svara

Sv: lägga till rad i en tabell i ett dataSet

Postades av 2005-05-30 10:46:25 - Johan Djupmarker

Man kan inte gör på det sättet, wr = row kopierar inte innehållet i row till wr utan pekar istället wr mot instansen row. När du sedan försöker lägga till row i din datatable protesterar den efter som row redan tillhör ett annat datatable. Jag känner inte till något annat sätt än att kopiera kolumn för kolumn, såhär alltså:

wr["col1"] = row["col1"];
wr["col2"] = row["col2"];

eller

wr[0] = row[0];
wr[1] = row[1];

eller om du loopar igenom alla columner i datatablen.

/Johan


Svara

Sv: lägga till rad i en tabell i ett dataSet

Postades av 2005-05-30 15:40:01 - Emma Magnusson

oavsett om man kan tilldela en rad på det viset eller inte så skulle du tilldela den nya tabellen den rad du vill ha lika många gånger som du har antal kolumner med den kod du har skrivet - och det känns ju inte så logiskt!

Men jag instämmer med föregående talare, tror inte heller du kan kopiera det på radnivå, du får loopa på kolumnnivå - vilket du iofs redan gör, men du får ändra koden i loopen en aning. Skapa en ny rad, lägga till allt i den som fanns på den gamla etc.

/Emma


Svara

Sv:lägga till rad i en tabell i ett dataSet

Postades av 2005-05-30 17:55:32 - Tobias Gustavsson

Njae, jag skapar faktiskt bara en rad i det nya dataSetet för varje "intressant" rad i det gamla, även om det kanske inte ser ut så. If satsen triggar bara då det reguljära uttrycket matchar en viss text i en av kolumnerna, endast då skapas en ny rad. Jag gör detta eftersom jag inte är intresserad av alla rader i det xml-laddade dataSetet. Hade jag endast velat kopiera alla kolumner skulle det förmodligen funka med DataSet.Tables[x].ImportRow(rad);

Jag har nu försökt att använda tekniken med att ta ett värde i taget. Tog många timmar innan jag förstod varför ingen data verkade föras över, fast jag inte fick några kompilerings eller runtime fel.

Till slut upptäckte jag att mitt gamlaDataSet, med data laddad från en xml-fil, inte hade samma typ på sina rows.ItemArray[x], som de nya raderna jag skapade

dvs
Debug.WriteLine(wr.ItemArray[0].GetType()); //wr = nyskapad rad
Skriver ut: System.DBNull

Medan
Debug.WriteLine(row.ItemArray[0].GetType()); //row = rad från xml-laddat DataSet
Skriver ut: System.String

Det nya DataSetet läser in ett xml-schema för att få rätt struktur ifall jag inte nämnde det förut.

Antar att de olika typerna gör att jag inte får det att funka men... hur tusan får jag de att stämma överrens?


Svara

Sv: lägga till rad i en tabell i ett dataSet

Postades av 2005-05-30 18:23:41 - jens lundequist

Hej jag förstår inte vad du vill göra men jag får uppfatningen av att du vill kopiera rader från ett dataTable till ett annat dataTable. Du skriver att du vill lägga till rader till ett dataSet men ett dataSet inhåller dataTables och inte dataRows.. Det är väl DataTables som inhåller DataRows?

Men om du vill kopiera dataRader från en dataTable till ett annat kan du pröva den här metoden..


public void copyTableData(DataTable fromTable, DataTable toTable)
{
int i=0;
foreach (DataRow rItem in fromTable.Rows)//kopierar data rad för rad mellan tabellerna
{
toTable.Rows[i].ItemArray = rItem.ItemArray;
i++;
}
}

Men det finns redan en CopyMetod för dataTables men den kopierar även strukturen för dataTable:n och den kanske man inte vill ha på köpet..
/JL


Svara

Sv: lägga till rad i en tabell i ett dataSet

Postades av 2005-05-30 18:23:42 - Tobias Gustavsson

hmm. har hittat något om Strongly Typed DataSet och att de kanske kan genereras från ett xml-schema på något sätt, men efter 12 timmars kämpnde är inte min hjärna riktigt i form att förstå, någon som kan förklara på ca en 3-årings nivå? ;)


Svara

Sv:lägga till rad i en tabell i ett dataSet

Postades av 2005-05-30 18:43:06 - Tobias Gustavsson

Jo, det stämmer att det är DataTables, som finns i DataSet, som innehålller DataRows.

Det du föreslår funkar nog om man vill ha alla kolumner från fromTable och kopiera dem till toTable, jag vill dock bara ha vissa kolumner, och vissa rader oxå. Problemet som jag förstår det är dock de olika typerna jag får på mina dataSet.Tables[].Rows...


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 166
27 952
271 704
746
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies