Laden...
I
Ishildur myCSharp.de - Member
Programmierer Schweiz Dabei seit 15.09.2005
Benutzerbeschreibung

Forenbeiträge von Ishildur Ingesamt 431 Beiträge

19.01.2006 - 15:48 Uhr

In C gab es eine wunderschöne Funktion PointInRect, um zu überprüfen, ob sich ein Punkt innerhalb eines Rechteckes befindet! Gibt es eine solche Funktion auch im .NET Framework?

19.01.2006 - 14:25 Uhr

Ja System.Windows.Forms ist in den Referenzen drinnen!

19.01.2006 - 13:50 Uhr

Wenn ich meinen Code compilliere kommt ein Fehler weger folgender Codezeile:

ListViewSubItem itmSub = null;

Der Fehler lautet folgendermassen:

Error 3 The type or namespace name 'ListViewSubItem' could not be found (are you missing a using directive or an assembly reference?) d:\Visual Studio 2005\Projects\QAS\QAS\FRM_SelectPicture.cs 36 4 QAS

In der MSDN - Doku habe ich nachgelesen, dass diesese Klasse das Assembly System.Windows.Forms benötigt, dieses habe ich jedoch bereits mit dem Schlüsselwort using eingebunden.

Woran liegt der Fehler?

Gruss Ishildur

19.01.2006 - 11:33 Uhr

Hei danke vielmals! 👍

19.01.2006 - 11:32 Uhr

Hallo zusammen, ich habe folgende Aufgabe:

  1. Bild beliebigen Formates laden
  2. Bereich auswählen und diesen in ein anderes Bild (Surface) laden
  3. Farbraum auf RGB setzen
  4. Format auf 24-Bit (R8G8B8) setzen
  5. Alpha - Informationen entfernen
  6. Bild als Jpeg in einen Stream laden
  7. Bild in MSSQL Datenbank speichern

Nun die Fragen:

  • Wie kann ich einen Bildbereich aus einem Vorhandenen Bild auswählen und diesen in ein neues Bild laden?
  • Wie kann ich den Farbraum von bspw. CMYK nach RGB konvertieren?
  • Wie kann ich das Format von Bspw. 32-Bit (A8R8G8B8) nach 24-Bit (R8G8B8) konvertieren?
    -Wie kann ich z.B. ein Png oder Tiff oder Bmp als Jpeg in einen MemoryStream laden? Und wie kann ich Jpeg - Speziefische Speichereinstellungen wie Interleaced oder Komprimierung kontrollieren?

Lg Ishildur

19.01.2006 - 08:53 Uhr

Hallo zusammen, wie kann ich ein halbtransparentes Rechteck zeichnen?
Gibt es dazu ein bestimmtes Brush?
e.Graphics.FillRectangle(new <<<?>>>,rctSel);

Lg Ishildur

18.01.2006 - 18:09 Uhr

Hi Leute, ich bins nochmal! Bereits zum 3. Mal stelle ich hier die Frage, wie man in C# Bitfelder auslesen kann. Dabei habe ich den Eindruck bekommen, dass die meissten hier gar nicht wissen, um was es sich bei einem Bitfeld handelt. Dazu folgende Erklährung:

Bitfelder können im Gegensatz zu Enumerationskonstanten mit der bitweisen OR-Operation kombiniert werden.

Bitfelder werden im Allgemeinen für Aufzählungen von Elementen verwendet, die zusammen auftreten können, während Enumerationskonstanten gewöhnlich für Aufzählungen von Elementen verwendet werden, die sich gegenseitig ausschließen. Bitfelder sind daher im Gegensatz zu Enumerationskonstanten dazu vorgesehen, zusammen mit der bitweisen OR-Kombination unbenannte Werte zu generieren. Bitfeldern werden in verschiedenen Programmiersprachen im Gegensatz zu Enumerationskonstanten unterschiedlich verwendet.

Also, das Auslesen kann ja wohl in einer modernen Hochsprache wie C# doch wohl unmöglich so auszusehen haben !? 8o 8o 8o

bool bAlpha = (img.Flags & ImageFlags.HasAlpha) == ImageFlags.HasAlpha; 

Kommt mir bitte, bitte, bitte nicht wieder mit "verwende doch &&"!!!

&& entspricht nicht &

&& ist eine logische AND - Verknüpfung zweier unabhängier booleanischer Ausdrücke, während & eine bitweise Verknüpfung zweier nummerischer Werte bewirkt.

Wer also den Unterschied zwischen diese beiden Operatoren nicht genauestens kennt, soll bitte besser nicht Antworten....

17.01.2006 - 17:10 Uhr

@ikaros
Deine Variante funktioniert, dass glaube ich! Es stellt sich nur die Frage, ob dies in .NET und C# 2.0 nicht einen eleganteren Weg gibt ? X(

17.01.2006 - 16:38 Uhr

Leute, Leute
Hand aufs Herz, wer von euch hat schon einmal C oder C++ programmiert?

Flags ist ein Bitfeld, welches auch mehrere Werte beinhalten kann. Bsp.

img.Flags = ImageFlags.ColorSpaceRgb | ImageFlags.HasAlpha | ImageFlags.HasTranslucent;

Wenn ich nun wissen will, ob das Bild Alpha - Informationen beinhaltet kann ich ja wohl kaum if(img.Flags == ImageFlags.HasAlpha) schreiben, denn ansonsten wird nur true zurückgegeben, wenn es nur Alpha aber keine Translucent Informationen beinhaltet.

For example, if the Flags property for an image returned 77960, the ImageFlags for the image would be ReadOnly, HasRealDpi, HasRealPixelSize, ColorSpaceYcbcr, and PartiallyScalable.

Also echt jetzt, entweder bin ich völlig behämmert, oder ihr habt nicht wirklich eine Ahnung, von was ihr da redet... 🙄

17.01.2006 - 14:52 Uhr

?( 🤔 ?(

17.01.2006 - 14:27 Uhr

Hallo Leute, wieso zum Teufel kann ich folgenden Code nicht kompillieren?


      // determine the color - range
      if((img.Flags & ImageFlags.ColorSpaceRgb) == ImageFlags.ColorSpaceRgb) strClr = "RGB";
      else if((img.Flags & ImageFlags.ColorSpaceCmyk) == ImageFlags.ColorSpaceCmyk) strClr = "CMYK";
      else if((img.Flags & ImageFlags.ColorSpaceGray) == ImageFlags.ColorSpaceGray) strClr = "GRAY";
      else if((img.Flags & ImageFlags.ColorSpaceYcbcr) == ImageFlags.ColorSpaceYcbcr) strClr = "YCBCR";
      else if((img.Flags & ImageFlags.ColorSpaceYcck) == ImageFlags.ColorSpaceYcck) strClr = "YCCK";

      // check for the alpha - value
      bAlp = (img.Flags & ImageFlags.Alpha) == ImageFlags.HasAlpha;

Fehler: Error 3 Operator '&' cannot be applied to operands of type 'int' and 'System.Drawing.Imaging.ImageFlags' d:\Visual Studio 2005\Projects\QAS\QAS\FRM_SelectPicture.cs 105 11 QAS

Was soll denn dass ? 🤔

17.01.2006 - 08:22 Uhr
  1. Hie, mit welchem anderen Wert ist denn das Gdi - Flag verknüpft?
  2. Das Erste würde aber nicht funktionieren, wenn die Werte nicht bereits das Ergebnis einer Bitverknüpfung sein würde, oder?
  3. Gibts nun einen eleganteren Weg als die unterste Code - Zeile?
16.01.2006 - 19:10 Uhr
  1. Bist du sicher, dass es kein Bitfeld ist? Wieso hat es dann Felder wie Alpha, Indexed und Gdi usw... Diese werden doch zusammen mit den Farbformaten gesetzt?

  2. Wieso würde es in die Hose gehen, wenn es ein Bitfeld wäre resp. was müsste ich denn anders machen?

Lg Ishildur

16.01.2006 - 18:53 Uhr

String strTyp = null,strFmt = null;

if((img.Pixelformat & PixelFormat.Format1bppIndexed) > 0) strFmt = "1-Bit (Indexed)";
else if((img.Pixelformat & PixelFormat.Format4bppIndexed) > 0) strFmt = "4-Bit (Indexed)";

usw...

if(img.RawFormat.Equals(ImageFormat.Bmp)) strTyp = "Bitmap";
else if(img.RawFormat.Equals(ImageFormat.Png)) strTyp = "Portable Network Graphic";

usw...

Gib es da nicht andere, elegantere Möglichkeiten, um Bitfelder auszulesen? Da kann ich ja genausogut bei C bleiben...

14.11.2005 - 09:22 Uhr

Und wieso gibts dann benannte Transaktionen?

14.11.2005 - 08:14 Uhr

Nein, ich meine nicht "nested transactions" sondern parallele Transaktionen, genauso wie ichs geschrieben habe... 😁

Ich habe bspw. eine Tabelle mit Ländern und eine Tabelle mit Kunden, welche auf die Ländertabelle zeigt. Nun bin ich bspw. gerade dabei, die Kundentabelle zu bearbeiten und habe hierfür eine Transaktion gestartet. Nun möchte ich in der Ländertabelle noch schnell in einer "parallelen" Transaktion einen Entrag hinzufügen, ohne dass ich vorher die Transaktion der Usertabelle beenden muss!


this.sqlCon.BeginTransaction();
this.sqlCon.BeginTransaction();

SqlConnection does not support parallel transactions.

Lg Ishildur

07.11.2005 - 15:40 Uhr

Hallo zusammen, weiss jemand von euch, wie ich erreichen kann, dass parallele Transaktionen zugelassen werden?

Ich muss bspw. eine Transaktion starten, um einen Kunden zu bearbeiten, und schliesslich eine weitere (Unter) - Transaktion, um dessen Zahlungen zu bearbeiten...

Lg Ishildur

07.11.2005 - 14:26 Uhr

Hallo zusammne, weiss jemand von euch, wie ich ein Bitmap in ein Byte - Array umwandeln kann, so dass dieses nur noch die Bilddaten enthält??

07.11.2005 - 14:03 Uhr

Gibt das keine einfachere Möglichkeit? 8o
Ich habe eben relativ viele Databindings:


// bind the input - fields
this.tbxID.DataBindings.Add("Text",dtaSrc,"Person_ID");
this.tbxPre.DataBindings.Add("Text",dtaSrc,"Prename");
this.tbxNme.DataBindings.Add("Text",dtaSrc,"Name");
this.dbxBrd.DataBindings.Add("Text",dtaSrc,"Birthdate");
this.tbxPrf.DataBindings.Add("Text",dtaSrc,"Profession");
this.tbxAhv.DataBindings.Add("Text",dtaSrc,"AHV");
this.tbxCon.DataBindings.Add("Text",dtaSrc,"Conto");
this.tbxBnk.DataBindings.Add("Text",dtaSrc,"Bank");
this.picPrs.DataBindings.Add("Image",dtaSrc,"Picture");
this.tbxAdr.DataBindings.Add("Text",dtaSrc,"Adress");
this.tbxZip.DataBindings.Add("Text",dtaSrc,"Zip");
this.tbxPlc.DataBindings.Add("Text",dtaSrc,"Place");
this.tbxCas.DataBindings.Add("Text",dtaSrc,"Postcase");
this.tbxTelBsi.DataBindings.Add("Text",dtaSrc,"TelBusi");
this.tbxTelPrv.DataBindings.Add("Text",dtaSrc,"TelPriv");
this.tbxFaxBsi.DataBindings.Add("Text",dtaSrc,"FaxBusi");
this.tbxFaxPrv.DataBindings.Add("Text",dtaSrc,"FaxPriv");
this.tbxMobBsi.DataBindings.Add("Text",dtaSrc,"MobBusi");
this.tbxMobPrv.DataBindings.Add("Text",dtaSrc,"MobPriv");
this.tbxMaiBsi.DataBindings.Add("Text",dtaSrc,"MailBusi");
this.tbxMaiPrv.DataBindings.Add("Text",dtaSrc,"MailPriv");
this.tbxWeb.DataBindings.Add("Text",dtaSrc,"Website");
this.cbxCty.DataBindings.Add("SelectedValue",dtaSrc,"Country_ID");
this.cbxTit.DataBindings.Add("SelectedIndex",dtaSrc,"Title");
this.cbxZvl.DataBindings.Add("SelectedIndex",dtaSrc,"Zivilstate");
   
// fill in the country - combobox with all countries
this.cbxCty.DataSource    = dtaSet.Tables[1];
this.cbxCty.DisplayMember = "Name";
this.cbxCty.ValueMember   = "Country_ID";

07.11.2005 - 13:57 Uhr

Hallo zusammen folgendes funktioniert ja recht gut

this.cbxZvl.DataBindings.Add("SelectedIndex",dtaSrc,"Zivilstate");

falls, und nur falls auf der Datenbank das entsprechende Feld nicht DBNull ist. Wie kann ich erreichen, dass, wenn dies der Fall ist, bspw. eine leere Zeichenkette in die Textbox resp. ein 0 in den SelectedValue geschrieben wird. Momentan wird noch folgende Exception ausgelöst:

Object cannot be cast from DBNull to other types

Lg Ishildur

07.11.2005 - 12:44 Uhr

SelectedValue habe ich zuerst versucht, jedoch ändert er den Value leider nicht, resp. ist dieser immer 0!

07.11.2005 - 12:37 Uhr

ArgumentException

Cannot bind to the new value member.
Parameter name: value

07.11.2005 - 12:31 Uhr

Wieso löst der folgende Code eine Exception aus, das kann ich nun gar nicht verstehen 🤔


this.cbxCty.DataSource    = dtaSet.Tables[1];
this.cbxCty.DisplayMember = "Name";
this.cbxCty.ValueMember   = "Country_ID";
this.cbxCty.DataBindings.Add("ValueMember",dtaSrc,"Country_ID");

07.11.2005 - 10:33 Uhr

Ist schon eine erstaunliche API !!! 🙂 🙂 🙂

Weiss du vielleicht auch, wie ich einen gerade neu hinzugefügten Datensatz auswählen kann?

this.dtaSet.Tables[0].Add(this.dtaSet.Tables[0].NewRow());

Nun ist der neue Eintrag zwar eingefügt, aber noch nicht ausgewählt. Ausserdem passiert leider nichts, wenn ich mit dem Navigator den nächsten Datensatz auswähle, dann ändern sich die Werte in den Eingabefeldern nicht?

07.11.2005 - 09:33 Uhr

Hey, das ist ja suuuuuper genial!!! Gibts etwas ähnliches für Textboxes?

07.11.2005 - 08:26 Uhr

Hallo Leute, gibt es in Visual C# .NET 2005 nicht so eine Art SqlCombobox, wo ich einfach eine DataTable und eine Spalte definieren kann, und dann wird diese automatisch aktualisiert?

Dasselbe währe natürlich ebenfalls toll für Eingabefelder usw...

02.11.2005 - 12:35 Uhr

Hallo zusammen
Ich entwickle momentan mit Microsoft Visual Studio 2005 Beta 2 Team Edition. Zwar laufen die Programme natürlich auf meinem Computer, jedoch nur auf meinem. Ich habe auf den anderen Computern das aktuelle .NET Framework 2.0 Redistributable installiert. Leider stürzt dort das Programm von Anfang an ab!

Was ist denn nun die aktuelle Entwicklerversion und woher bekomme ich es?

Gruss Ishildur

02.11.2005 - 11:44 Uhr

Ja, er sortiert es zwar, jedoch fügt er dann immer neue Einträge zuobert ein anstatt zuunterst... ?

02.11.2005 - 11:27 Uhr

Hallo zusammen, wie kann ich denn ein DataGridView sortieren? Ich möchte, dass mein DataGridView nache jedem neuen Datensatz resp. nach jeder Änderung neu sortiert wird!

02.11.2005 - 08:48 Uhr

@Michael
Ich glaube, du hast meine Frage missverstanden:

Anstatt
if(exp.Number == 0x3ed) doSomeSpecialStuff();

möchte ich bspw. so schreiben:

if(exp.Number == SqlNumber.ConnectionAborted) doSomeSpecialStuff()

02.11.2005 - 08:20 Uhr

Hallo zusammen, ich habe folgende Frage: Gibt es für die SqlException.Number keine Konstantenliste?

27.10.2005 - 14:45 Uhr

// ------------------------ event - handler for the menu - action edt -----------------------
  private void del_Click(object sender,EventArgs e) {
   // start a loop for deleting each selected row
   foreach(DataGridViewRow row in this.dtaViw.SelectedRows)
    ((DataRowView)row.DataBoundItem).Delete();

   // open a try - statement as there may occure an exception
   try {
    // try to update the database
    this.sqlAdp.Update(this.sqlSet.Tables[0]);
   }
   // an exception occured
   catch(SqlException exp){
    // reject all changes
    this.sqlSet.RejectChanges(); // ####### Changed ##########

    // check if there is a problem with the referencial integrity
    if(exp.Number == 0x223){
     String strExp = "Mindestens einer der ausgewählten Länder wird momentan verwendet und ";
     strExp += "kann nicht entfernt werden!";
     MessageBox.Show(strExp,"Fehler",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
     // otherwise the database is inconsistent
    else{
     String strExp = "Die gewünschte Operation kann nicht ausgeführt werden, weil die ";
     strExp += "Datenbankstruktur ungültig oder beschädigt ist!";
     MessageBox.Show(strExp,"Fehler",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
   }
  }
  // ------------------------------------------------------------------------------------------

So gehts !!

Ich habe aber noch eine andere Frage:
Das DataGridView zeigt immer einen Eintrag zuviel, also zuunterst noch eine leehre Zeile, woran liegt das bzw. kann ich das verhindern?

27.10.2005 - 14:04 Uhr

an dieser stelle ist dein datensatz im datagrid bereits gelöscht

Das ist richtig, aber auf der Datenbank und im Dataset usw. sollte er ja nicht gelöscht sein, also müsste ich doch nur das DataGridView aktualisieren und schwupps, sollte der Datensatz wieder da sein. DataGridView::update hat aber leider nicht den gewünschten Effekt gebracht...

27.10.2005 - 13:42 Uhr

Hallo zusammen, wie der Titel bereits sagt, habe ich ein Problem mit der Referentiellen Integrität. Das Problem ist dies, dass zwar eine Exception geworfen wird, jedoch wird der Datensatz im DataGridView dennoch gelöscht? Wie kann ich das verhindern, bzw. was ist an folgendem Code falsch?


  // ------------------------ event - handler for the menu - action edt -----------------------
  private void del_Click(object sender,EventArgs e) {
   // start a loop for deleting each selected row
   foreach(DataGridViewRow row in this.dtaViw.SelectedRows)
    ((DataRowView)row.DataBoundItem).Delete();

   // open a try - statement as there may occure an exception
   try {
    // try to update the database
    this.sqlAdp.Update(this.sqlSet.Tables[0]);
   }
   // an exception occured
   catch(SqlException exp){
    // check if there is a problem with the referencial integrity
    if(exp.Number == 0x223){
     String strExp = "Mindestens einer der ausgewählten Länder wird momentan verwendet und ";
     strExp += "kann nicht entfernt werden!";
     MessageBox.Show(strExp,"Fehler",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
     // otherwise the database is inconsistent
    else{
     String strExp = "Die gewünschte Operation kann nicht ausgeführt werden, weil die ";
     strExp += "Datenbankstruktur ungültig oder beschädigt ist!";
     MessageBox.Show(strExp,"Fehler",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
   }
  }
  // ------------------------------------------------------------------------------------------

26.10.2005 - 13:04 Uhr

Etwas habe ich noch herausgefunden:
BeginEdit wirft zwar keine Exception, gibt aber immer false zurück, woran könnte das liegen?

26.10.2005 - 12:22 Uhr

Gabs da noch massive Änderungen?

26.10.2005 - 09:41 Uhr

Ja ist selektiert! Ist das RC1 eine Release?

26.10.2005 - 09:20 Uhr

Ich habe die Beta2 und es ist leider nicht Readonly... 🙁

26.10.2005 - 09:00 Uhr

Nein, eben nicht, es passiert einfach nichts...

26.10.2005 - 08:01 Uhr

Naja, es ist eigentlich ganz simpel: Ich möchte, dass wenn ich einen bestimmten Button drücke, das ich einen Datesatz im DataGridView verändern, bzw. neu erstellen kann!


  private void add_Click(object sender,EventArgs e) {
   this.sqlSet.Tables[0].Rows.Add(this.sqlSet.Tables[0].NewRow());

   foreach(DataGridViewCell celCur in this.dtaViw.SelectedCells)
    celCur.Selected = false;

   this.dtaViw.Rows[this.dtaViw.Rows.Count-1].Selected = true;
   this.dtaViw.BeginEdit(true);
  }

  private void edt_Click(object sender,EventArgs e) {
   this.dtaViw.BeginEdit(true);
  }

Das Ganze erscheint mir auch recht umständlich, ich mach vermutlich das meisste falsch? X(

25.10.2005 - 16:27 Uhr

Ja, du hast Recht, allerdings passiert leider einfach nichts, wenn ich diese Funktion aufrufe. Ich habe auch versucht, das BeginEdit von vom DataSet aufzurufen, aber das hat leider auch keinen Effekt! Was könnte ich falsch machen?

25.10.2005 - 16:11 Uhr

Hallo zusammen, wie kann ich eine bestimmte Zelle eines DataGridView in den Edit - Modus versetzen, irgendwie finde ich keine BeginEdit - Methode wie es zum Beispiel ein ListView - Controll kennt!

03.10.2005 - 18:02 Uhr

Nun ja, ich meine auch nicht in C# sondern in C++

03.10.2005 - 08:22 Uhr

Hallo zusammen, weiss jemand von euch, wie ich erreiche, dass der Compiler nicht mehr die Unicode Funktionen nimmt? Bsw. Ich rufe die Funktion LoadString auf, der Compiler jedoch ruft die Funktion LoadStringW auf. Wie kann ich das verhindern? Ich glaube, ich muss irgendwo eine Compilerkonstante setzen, aber welche?

Gruss Ishildur

26.09.2005 - 12:41 Uhr

Also ich habs jetzt folgendermassen gelöst, aber muss dass denn sein?


   // create the parameters for the insert and update commands
   SqlParameter[][] sqlPrm = new SqlParameter[2][];

   // start a loop for walking each command
   for(int i=0;i<2;++i) {
    // create a new array of parameters for the current command
    sqlPrm[i] = new SqlParameter[this.sqlSet.Tables[0].Columns.Count];

    // start a loop for walking each column
    for(int k=0;k<this.sqlSet.Tables[0].Columns.Count;++k) {
     // create and setup a new parameter for the current column
     sqlPrm[i][k] = new SqlParameter();
     sqlPrm[i][k].ParameterName = this.sqlSet.Tables[0].Columns[k].Caption;
     sqlPrm[i][k].SourceColumn  = this.sqlSet.Tables[0].Columns[k].Caption;
    }
   }

26.09.2005 - 10:34 Uhr

Hey FZelle
Das FUNKTIONIERT!!!!!!!!!!!!!!!!!!

Man braucht nichtmal das SELECT hineinzuschreiben! Anscheinend hatten die Entwickler von Microsoft an diese Situation gedacht und so implementiert, dass die Update - Methode des Dataadapters das IDENTITY als Schlüsselwort erkennt!!
Vielleicht wäre das etwas für die FAQ, denn diese Form kann die Entwicklung massiv vereinfachen!!!

🙂 🙂 🙂 👍 👍 👍

8o ADO .NET ist ja... ja.... GEEEEEEIIIIILLLLLL


   // define and create an insert - command
   String strIns = "INSERT INTO Person(Title,Name,Prename,Birthdate,Adress,Zip,Place,";
   strIns += "Country_ID,TelPriv,TelBusi,FaxPriv,FaxBusi,MobPriv,MobBusi,MailPriv,MailBusi,";
   strIns += "Website,JoinDate) VALUES(@Title,@Name,@Prename,@Birthdate,@Adress,@Zip,";
   strIns += "@Place,@Country_ID,@TelPriv,@TelBusi,@FaxPriv,@FaxBusi,@MobPriv,@MobBusi,";
   strIns += "@MailPriv,@MailBusi,@Website,@JoinDate);INSERT INTO Customer(Person_ID,";
   strIns += "Corporation,Travel,Mailing) VALUES(@@IDENTITY,@Corporation,@Travel,@Mailing)";
   this.sqlAdp.InsertCommand = new SqlCommand(strIns,this.sqlCon);

26.09.2005 - 09:33 Uhr

Und wie mache ich dies in der Update Methode? Das ist eigentlich das, was ich die ganze zu Fragen versuche! Es kommt ja sehr oft vor, dass man ein DataViewGrid aus mehreren Physikalischen Tabellen auf der Datenbank zusammenführt, und wenn der Benutzer schliesslich die Werte dieses Grids ändern, dann muss man ja auch mit Hilfe der InsertCommand sowie UpdateCommand neue Datensätze hinzufügen, resp. vorhandene bearbeiten können??

26.09.2005 - 09:25 Uhr

Naja, ich hätte mir gewünscht, dass er die Parameter automatisch erzeugt und ich nur noch die Eigenschaften festlegen müsste:


foreach(DataColumn col in this.sqlSet.Tables[0].Columns)
 cmdIns.Parameters[col.Caption].SourceColumn = col.Caption;

Ich habe auch folgendes versucht


foreach(DataColumn col in this.sqlSet.Tables[0].Columns){
 SqlParameter sqlPrm = cmdIns.CreateParamameter();
 sqlPrm.ParameterName = sqlPrm.SourceColumn = col.Caption;
}

Nur leider ist der entsprechende Parameter dann noch nicht zugewiesen, wie man es eigentlich erwarten würde. Wie folgendes Performance - Technisch aussieht, weiss ich nicht?


 foreach(DataColumn col in this.sqlSet.Tables[0].Columns){
 SqlParameter sqlPrm = cmdIns.CreateParamameter();
  sqlPrm.ParameterName = sqlPrm.SourceColumn = col.Caption;
 cmdIns.AddRange(new SqlParameter[]{sqlPrm});
}

Gibst da wirklich nichts in der Richtung?

P.S.
Was meinst du mit: Datentyp nicht vergessen? Macht er das nicht intern, der Value ist ja immer vom Typ Object, ich habe gedacht, dass er den dem Datenbanktyp am ähnlichsten Datentyp wählt?

26.09.2005 - 09:12 Uhr

Ach so, ich hatte angenommen, dass zwei '@' Zeichen eine Variable generieren, während ein '@' Zeichen, den Wert ausliest. Was passiert denn da genau, irgendwie verstehe ich die Synthax nicht so ganz...

Aber danke schon mal vielmals, das hat schon sehr geholfen FZelle und Noodless! 🙂 👍

26.09.2005 - 09:03 Uhr

Danke vielmals!! 🙂 👍