On Sun, 16 Oct 2005 22:16:53 +0200, "Peter Fleischer"
Post by Peter Fleischer...
Post by Bruno UatoIch
With DataColumnMengeAb
'.DataType = System.Type.GetType("system.Int32")
Bruno,
und warum ist die Type-Zuweisung auskommentiert?
Weil Sie zwar kompeliert, aber beim Debuggen zu einem Crash führt.
Post by Peter FleischerPost by Bruno UatoDie Zuweisung per .DataType = System.Type.GetType("system.Int32") ist
in verschiedenen Beispiel so genannt, auch außerhalb der MSDN.
Ist ja auch gut so. Unpassender Type einer Spalte in der Datenbank zum
Spaltentyp in der Tabelle im Client bringt Fehler beim Versuch des
Abgleiches (Fill oder Update) der Daten, da unklar ist, wie beispielsweise
ein Buchstabe "A" in eine Zahl umzuwandeln ist.
Es ist immer noch unklar, welcher Feldtyp in der Datenbank steht.
Wie gesagt blutiger Anfänger....
Also per Designer ein Datagrid auf einer Form plaziert. Per Code ein
Dataset und drei DataColumn erzeugt und Syles für die das Datagrid
Private DataColumnMengeAb As New System.Data.DataColumn
Private DataColumnStueckpreis As New System.Data.DataColumn
Private DataColumnGesamtkosten As New System.Data.DataColumn
Private DataGridTableStyleRabattstaffel As New
System.Windows.Forms.DataGridTableStyle
Private DataGridColumnStyleMengeAb As
System.Windows.Forms.DataGridColumnStyle = New
System.Windows.Forms.DataGridTextBoxColumn
Private DataGridColumnStyleStueckpreis As
System.Windows.Forms.DataGridColumnStyle = New
System.Windows.Forms.DataGridTextBoxColumn
in eier Sub erfolgt dann die Zuweisung
Private Sub CreateRabattstaffeln()
'Die ganze Zuordungen für Dataset und Datagrid etc.
Try
'System.Data.DataColumn
With DataColumnMengeAb
'.DataType = System.Type.GetType("system.Int32")
.ColumnName = "MengeAb"
.ReadOnly = False
.Unique = True
End With
With DataColumnStueckpreis
'.DataType = System.Type.GetType("system.double")
.ColumnName = "Stueckpreis"
.ReadOnly = False
.Unique = False
End With
With DataColumnGesamtkosten
.ColumnName = "Gesamtkosten"
.ReadOnly = False
.Unique = False
End With
With DataTableRabattstaffel
.Columns.Add(DataColumnMengeAb)
.Columns.Add(DataColumnStueckpreis)
.Columns.Add(DataColumnGesamtkosten)
End With
With DataGridColumnStyleMengeAb
.HeaderText = "Menge ab"
.Width = 100
.MappingName = "MengeAb"
End With
With DataGridColumnStyleStueckpreis
.HeaderText = "Stückpreis"
.Width = 150
.MappingName = "Stueckpreis"
End With
With DataGridTableStyleRabattstaffel
.GridColumnStyles.Add(DataGridColumnStyleMengeAb)
.GridColumnStyles.Add(DataGridColumnStyleStueckpreis)
End With
With DataGridRabattStaffel
'Alles löschen
.DataBindings.Clear()
.TableStyles.Clear()
.DataSource = Nothing
.TableStyles.Add(DataGridTableStyleRabattstaffel)
.DataSource = DataTableRabattstaffel
.HeaderBackColor = System.Drawing.Color.White
.CaptionText = "Rabattstaffel eintragen"
End With
'Die erste Menge mit 1 vorbelegen
'Spalte 0 ist die Menge, Spalte 1 der Preis, Spalte 2
die Gesamtkosten
Dim Zeile As System.Data.DataRow
Zeile = Me.DataTableRabattstaffel.NewRow
DataTableRabattstaffel.Rows.Add(Zeile)
DataTableRabattstaffel.Rows(0).Item(0) = 1
Catch ex As Exception
System.Windows.Forms.MessageBox.Show("Create....: " &
ex.ToString)
End Try
End Sub
ich lade von keiner Datenbank Daten in das Dataset, sondern benutze
Datagrid als Eingabe und Dataset als Speicher für meine Daten und
weiteren Berechnungen. Ich dachte ich weise dem Datacolumn einen
Datatype zu und mache ihn somit Typsicher.
Mfg, Bruno