Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Aus Datagridview Daten aktualisieren und in Tabelle zurückspeichern, findet aber die Tabelle nicht?

Mitglied: HufiHufeisen

HufiHufeisen (Level 1) - Jetzt verbinden

26.10.2011, aktualisiert 12:44 Uhr, 4442 Aufrufe, 1 Kommentar

Hallo ihr Lieben!

Ich bin zur Zeit Anfänger, und versuche mich an einem kleinen Projekt, nur leider scheitere ich schon am anfang.
Ich verwende einen SQL Server 2005 und die VBNet 2008 Umgebung.

Ich habe 2 Tabellen einmal für die Spieler und für Vereine, beide sind mittels Inner Join verknüpft (Primär und Foreign Key gesetzt).

In meiner WIndowsForm soll über eine ComboBox die Vereinsnamen aufgelistet werden, was ich mittels DataReader umgesetzt habe, wenn der Benutzer über die Combox einen Verein auswählt, dann erscheint in der Datagridview die Spieler, die zu dem Verein gehören. Klappt alles wunderbar.

Nun möchte ich aber dem Benutzer die Möglichkeit geben, Daten zu ändern bzw. zu löschen. Der Löschvorgang im Datagridview funktioniert zwar, aber die darauffolgende Aktualiserung auf die Tabelle klappt nicht, da die Tabelle nicht gefunden wird.. obwohl alles deklariert wurde...

Aktualisieren: TableMapping['tbl_spielerdaten'] oder DataTable 'tbl_spielerdaten' kann nicht gefunden werden ???

Ich habe mal den gesamt Quellcode reingesetzt in der Hoffnung, dass mir jemand den Fehler wiedergeben kann, würde mich freuen!


I. Combobox-Spalte füllen mit DataReader
Private Sub ReadData_SQLServer()

'1.Verbindung
Dim Cn_sql As New SqlConnection
Dim ConnBuilder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder()
With ConnBuilder
.DataSource = "xxxx"
.InitialCatalog = "mog_sportverwaltung"
.UserID = "xx"
.Password = "xx"
End With

'2.ConnectionString zusammenstellen lassen vom ConnectionStingBuilder-Object
Dim CONNSTRING As String = ConnBuilder.ConnectionString

'3.Tabelle definieren
Const TblName As String = "tbl_vereinsdaten"

'4.SQL.Statement festlegen
Const strSQL As String = "Select * from " & TblName & ";"

'5.Verbindung aufbauen
Cn_sql.ConnectionString = CONNSTRING
Cn_sql.Open()

Dim cmd As SqlCommand = Cn_sql.CreateCommand
cmd.CommandText = strSQL


Dim dr As SqlDataReader = cmd.ExecuteReader

Do While dr.Read
ComboBox1.Items.Add(dr.Item(0).ToString)
Loop

'Connection schliessen
dr.Close()
Cn_sql.Close()
End Sub


II. Aus Combobox-Auswahl (hier die Vereinsauswahl gemeint) mit Dataset in Datagridview ausgeben
Private Sub ComboBox_auslesen

Dim TblName As String = "tbl_vereinsdaten"
Dim TblName1 As String = "tbl_spielerdaten"

'SQL.Statement festlegen
Dim strSQL As String

strSQL = "Select S_Name, S_Vorname, Nationalität, Herkunft, S_Alter, Position, Tore from " _
& TblName1 & " inner join " & TblName & " on " & TblName & ".pk_VereinID = " _
& TblName1 & ".fk_VereinID where pk_VereinID = ' " & ComboBox1.SelectedIndex + 1 & "'"

Dim ds As New DataSet

ds = DatasetFüllen(strSQL)

Dim myDataTable As New DataTable()
myDataTable = ds.Tables("DataTable")

With DataGridView1
DataGridView1.DataSource = ds
DataGridView1.DataMember = "DataTable"
End With

Public Function DatasetFüllen(ByVal strSQL As String) As DataSet
Dim Cn_sql As New SqlConnection
Dim ConnBuilder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder()
Dim bindingSource1 As New BindingSource()
With ConnBuilder
.DataSource = "xxxx"
.InitialCatalog = "mog_sportverwaltung"
.UserID = "xx"
.Password = "xx"
End With

Dim CONNSTRING As String = ConnBuilder.ConnectionString
Cn_sql.ConnectionString = CONNSTRING
Dim cmd As New SqlCommand(strSQL, Cn_sql)
Dim da As New SqlDataAdapter(cmd)
Cn_sql.Open()
Dim ds As New DataSet()
da.Fill(ds, "DataTable")
Cn_sql.Close()

Return ds
End Function
End Sub

III. Zeilen in Datagridview löschen, und wieder aktualisieren bzw. speichern


Private Sub btn_löschen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_löschen.Click

Dim Cn_sql As New SqlConnection
Dim ConnBuilder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder()
With ConnBuilder
.DataSource = "xxxx"
.InitialCatalog = "mog_sportverwaltung"
.UserID = "xx"
.Password = "xx"
End With

Dim ds As New DataSet
Dim da As New SqlDataAdapter
da.MissingSchemaAction = MissingSchemaAction.AddWithKey

Cn_sql.ConnectionString = ConnBuilder.ConnectionString


Dim TblName1 As String = "tbl_spielerdaten"

With DataGridView1
'DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
Dim Dr As Integer
Dr = MsgBox("Wirklich löschen?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Achtung, Löschvorgang")

If Dr = vbYes Then

Dim x As Integer
Dim i As Integer
Dim y As Integer = .GetCellCount(DataGridViewElementStates.Selected)
For i = y - 1 To 0 Step -1
x = .SelectedCells(i).RowIndex
.Rows.RemoveAt(x)

da.UpdateCommand = New SqlCommand(" update " & TblName1 & " set S_Name = @S_Name, S_Vorname = @S_Vorname, " _
& " Nationalität = @Nationalität, Herkunft = @Herkunft, S_Alter = @S_Alter, Position = @Position, Tore = @Tore ", Cn_sql)

da.UpdateCommand.Parameters.Add("@S_Name", SqlDbType.VarChar, 20, "S_Name")
da.UpdateCommand.Parameters.Add("@S_Vorname", SqlDbType.VarChar, 20, "S_Vorname")
da.UpdateCommand.Parameters.Add("@Nationalität", SqlDbType.VarChar, 30, "Nationalität")
da.UpdateCommand.Parameters.Add("@Herkunft", SqlDbType.VarChar, 30, "Herkunft")
da.UpdateCommand.Parameters.Add("@S_Alter", SqlDbType.Int, 1, "S_Alter")
da.UpdateCommand.Parameters.Add("@Position", SqlDbType.VarChar, 30, "Position")
da.UpdateCommand.Parameters.Add("@Tore", SqlDbType.Int, 1, "Tore")

Try
da.Update(ds, TblName1)

Catch ex As SqlException
MessageBox.Show(ex.Message, "Fehlermeldung", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Finally

End Try

Next
Else
Exit Sub
End If

End With


End Sub
Mitglied: dog
26.10.2011 um 16:23 Uhr
Du hast hier schonmal einen Logik-Fehler drin.

Entweder du benutzt einen SqlDataAdapter - und dann definierst du nur Vorlagen für die Queries und bindest den an das DataSet.
Oder du machst es ganz von Hand, dann brauchst du aber auch keinen SqlDataAdapter.

Zudem solltest du die DB-Verbindung nicht in jeder Funktion neu aufbauen, sondern nur einmal beim Programmstart.
Bitte warten ..
Ähnliche Inhalte
Visual Studio

VB.net Datagridview in Datenbank Access zurückspeichern

gelöst Frage von Pilger83Visual Studio1 Kommentar

Hallo zusammen, bräuchte bitte eine kleine Hilfestellung (Code unten), finde leider den Fehler nicht folgendes Problem angebundene Datenquellen sind ...

Datenbanken

Foto aktualisieren in SQL Tabelle

gelöst Frage von Dr.CornwallisDatenbanken2 Kommentare

Liebe Gemeinde, ich habe eine Access Datenbank auf einen SQL Server hochgeladen. In dieser Datenbank gibt es eine Tabelle ...

Visual Studio

DataGridViewComboBoxColumn - DatagridView

Frage von SachsenHessiVisual Studio2 Kommentare

Hallo all, ich stehe mal wieder auf dem Schlauch :( Ich habe ein DGV, dem eine DataGridViewComboBoxColumn zugefügt wird. ...

Microsoft Office

Kopieren von auszuwählenden Daten in weitere Tabelle

Frage von dus100Microsoft Office1 Kommentar

Hallo, wie einige andere auch habe ich ein Problem bei der Erstellung von Makros in VBA. Ich nutzeExcel für ...

Neue Wissensbeiträge
Sicherheit
Neue IT-Administrator Ausgabe - Endpoint Security
Information von Frank vor 33 MinutenSicherheit

Die Endgeräte in Unternehmen stellen das wohl größte Einfallstor für Angreifer dar. Ein geöffneter, infizierter E-Mail-Anhang oder der Besuch ...

Windows Tools

Windows 10 BitLocker Laufwerkverschlüsselung ohne TPM-Chip

Anleitung von Frank vor 58 MinutenWindows Tools1 Kommentar

Diese Anleitung zeigt, wie man die Windows BitLocker Laufwerkverschlüsselung ohne TPM-Chip Schritt für Schritt aktiviert. Zwar haben viele Laptops ...

Sicherheit

Interessante Methode für Leute, die in einer Windowsdomäne starke Kennwörter erzwingen wollen

Information von DerWoWusste vor 5 StundenSicherheit3 Kommentare

Dieser Artikel beschreibt, wie man auch ohne 3rd-party-tools die Kennwortsicherheit in Windows-Domänen erhöhen kann. Der Grundgedanke lautet: wir prüfen ...

Windows Server

SBS 2011: Installation von KB4457144 schlägt beim Reboot fehl - Von Dienst gesperrte Schriftart ursächlich

Tipp von the-buccaneer vor 16 StundenWindows Server1 Kommentar

Moinsen zusammen! Das hat mich einige graue Haare gekostet: Ein SBS 2011 weigerte sich schon im August, das monatl. ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V33 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

Windows Server
Kann DNS-Einträge nicht finden
gelöst Frage von BPeterWindows Server19 Kommentare

Hallo, wenn ich folgenden Befehl absetze, bekomme ich eine Liste zurück mit allen Einträgen der DNS-Zone. Wenn ich aber ...

Router & Routing
Größere Zahl VPN-Verbindungen mit Fritz-Box einrichten
Frage von miscmikeRouter & Routing15 Kommentare

Hallo Zusammen, ich supporte verschiedene Kunden mit bestehenden LAN-LAN-Kopplungen via FritzBox (7490, FritzOS 7.01) . Anwendungen sind z.B. Kaspersky-KSC ...

Voice over IP
Umstellung Anlagenanschluss ISDN auf IP - Welcher Router?
Frage von ToniSchmidtVoice over IP12 Kommentare

Hallo zusammen, zum Ende des Jahres werden unsere geliebten ISDN Anlagenanschlüsse zwangsweise auf IP Anschlüsse umgestellt. Wir betreiben die ...