| |
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 |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|