| |
VB.NET - Ein- und UmsteigerRe: Column Add DataGridView | | | Autor: FZelle (Moderator) | Datum: 20.10.06 09:02 |
| Sorry, wenn ich das immer wieder zum besten gebe, aber mit dem Grundsätzlichen
Verständnis von ADO.NET würdest Du diese Frage nicht stellen.
Das DataSet ist eine vollkommen eigenständige Datenstruktur, die ersteinmal nichts
mit einer speziellen Datebank zu tun hat.
Ein DataAdapter ist das Bindeglied zur Datenbank.
Er liest Daten aus der DB und fügt ggf die Spalten in die DataTable im DataSet ein.
Auf dem umgekehrten Weg führt er die jeweiligen Befehle ( Insert/Update/DeleteCommand)
einfach nur aus.
Auch der DataAdapter ist zu dumm, um irgendetwas selbständig zu tun.
Wenn Du also in deinem Grid eine Spalte einfügst, die noch nicht in der DB
vorhanden ist, musst Du diese erst in der Datenbank hinzufügen.
( "Alter Table...", aber das weist Du ja wie es geht )
Danach am besten mit einem neuen DataAdapter und einem neuen CommandBuilder
die Datenbank speichern. | |
Re: Column Add DataGridView | | | Autor: DaveS (Moderator) | Datum: 20.10.06 10:33 |
| Tja, warum eine DB? Dafür brauchst du eher ein Spreadsheet. Wenn du eine neue Spalte in der DB anlegst und alles neu einliest wirst du wie FZelle schreibt alle Spalten im DGV haben, die neue wird leer sein. Wenn du einfach eine Spalte im DGV anlegst fehlt alles in DataTable, DataView, BindingSource usw, und natürlich auch DB:
Du solltest vielleicht bedenken, dass die Darstellung und die abgespeicherten Daten nicht unbedingt die gleiche Form haben. Du kannst DGV mit Code steuern, und die Daten im ganz anderen Format abspeichern, aber das ist wirklich keine echte DB Anwendung, nur ein Blatt mit Spalten und Reihen.
________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist | |
Re: Column Add DataGridView | | | Autor: viperbone | Datum: 23.10.06 09:45 |
| Ok, dann versuch ich mal ein Überlick zu erstellen.
Das ist die Hauptform
Public Class frmMain
#Region "frmMain"
Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As _
System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Me.Validate()
Me.SprBindingSource.EndEdit()
Me.SprTableAdapter.Update(Me.SprachenDataSet.spr)
End Sub
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
'TODO: Diese Codezeile lädt Daten in die Tabelle "SprachenDataSet.spr".
' Sie können sie bei Bedarf verschieben oder entfernen.
Me.SprTableAdapter.Fill(Me.SprachenDataSet.spr)
Me.DataGridView1.AutoGenerateColumns = True
End Sub
#End Region
#Region "Menu"
Private Sub SpracheHinzufügenlöschenToolStripMenuItem_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) Handles _
SpracheHinzufügenlöschenToolStripMenuItem.Click
frmSpr.Show()
End Sub
#End Region
End Class Auf der Hauptform sind ausserdem:
* SprachenDataSet
* SprBindingSource
* SprTableAdapter
* DataGridView1
Das ist die Form zum Sprachen hinzufügen/löschen
Public Class frmSpr
#Region "Form"
Private Sub frmSpr_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
' Combobox füllen
comboFILL()
End Sub
#End Region
#Region "Buttons"
Public dt As New SprachenDataSet.sprDataTable
Public dataAdap As New SprachenDataSetTableAdapters.sprTableAdapter
Public ds As New DataSet
Public cmdb As New OleDb.OleDbCommandBuilder
Private Sub btnsprADD_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles btnsprADD.Click
For i As Integer = 0 To frmMain.DataGridView1.Columns.Count - 1
If Me.txtADDCOLUMN.Text = frmMain.DataGridView1.Columns( _
i).HeaderText Then
MessageBox.Show("Spalte schon vorhanden.")
Exit For
End If
Next
Dim con As System.Data.OleDb.OleDbConnection = New _
OleDb.OleDbConnection(My.Settings.SprachenVerbindungsText)
Try
con.Open()
' Spalte in Access DB hinzufügen
Dim com As OleDb.OleDbCommand = New OleDb.OleDbCommand("ALTER TABLE" & _
"spr ADD " & Me.txtADDCOLUMN.Text & " STRING", con)
com.ExecuteNonQuery()
con.Close()
Catch ex As Exception
MessageBox.Show("Die neue Sprache konnte nicht hinzugefügt werden.")
Me.txtADDCOLUMN.Clear()
Exit Sub
End Try
Dim command As String = "SELECT * FROM spr"
Dim dataAdap As New OleDb.OleDbDataAdapter(command, con)
cmdB = New OleDb.OleDbCommandBuilder(dataAdap)
Dim ds As New DataSet()
dataAdap.Fill(ds, "spr")
frmMain.SprBindingSource.DataSource = New BindingSource(ds.Tables( _
"spr"), Nothing)
frmMain.SprBindingSource.EndEdit()
dataAdap.Update(ds.Tables("spr"))
frmMain.DataGridView1.Refresh()
Me.txtADDCOLUMN.Clear()
End Sub
#End Region
End Class fg viperbone | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere Infos
|