ERLEDIGT
NEIN
NEIN
ANTWORTEN
13
13
ZUGRIFFE
1460
1460
EMPFEHLEN
-
03.06.10 21:19 #1
- Registriert seit
- May 2010
- Beiträge
- 14
Hallo,
ich arbeite mit VB.net 08 und access und habe eine datagridview eingerichtet, in welche eine Datenbanktabelle geladen wird. Der user kann dann in ein TExtfeld einen Namen eingeben und wenn man auf einen button einfügen klick dann wird der name in der gridview angezeigt. beim button speichern speichert er das aus der datagridview in die db.
Nun mein Problem: wie gestalte ich den code so, dass er zunächst prüft ob der datensatz aus der textbox bereits vorhanden ist und wenn ja nicht speichert. Sonst hab ich ja datensätze doppelt.
Danke für die Hilfe.
Questionmark
-
Indem du zum Beispiel dieses Feld mit einem Primary Key versiehst. Oder indem du in einer Liste die Hashes aller Strings (optimalerweise in ToUpper oder ToLower) speicherst und dann entsprechend abfragst ob da schon was drin ist.
-
03.06.10 21:33 #3
- Registriert seit
- May 2010
- Beiträge
- 14
geht das auch einfacher?!
also vllt mit einer if anweisung also ich bin da nicht so bewandert und deswegen sagt mir das garnichts was du mir da geschrieben hast...
also vllt bevor ich einfügen in das datagridview klicke soll er prüfen ob der value in der textbox bereits in datenbank vorhanden...wenn ja msgbox("datensatz existiert") geht das so in der art?
-
Ja, eben, das ist Variante 2.
if(listHashes.Contains(eingabeWert.ToLower().GetHashCode()))
vorhanden
else
nicht vorhanden
-
03.06.10 21:45 #5
- Registriert seit
- May 2010
- Beiträge
- 14
habs genauso eingefügt und es geht nicht. außerdem kenn ich die gnzen begriffe nicht...
ich weiß, aber ich bin halt weiblich und nicht so bewandert darin...
und so ganz einfach gehts nciht? ein auf if txtkname.value = Datagridview.value then Msgbox("Name berets vorhanden")
-
-
Du könntest noch code-Tags verwenden, dann ist der Code auch lesbar

Du kannst die DataTable mit einem PrimaryKey versehen:
Code :1 2 3
DataTable tbl = set.Tables[0]; tbl.PrimaryKey = new DataColumn[1]; tbl.PrimaryKey[0] = tbl.Columns[0];
Das setzt beispielweise die erste Kolonne als PrimaryKey. Natürlich solltest du da immer noch Exceptions abfangen.
-
03.06.10 22:11 #8
- Registriert seit
- May 2010
- Beiträge
- 14
was für code-tags?! naja...
aber ich habe ja die spalte nr, die versteckt ist als primarykey in der db.
-
[ code]
[/ code]
ohne die Leerzeichen. Werden denn die Primary-Keys aus der Datenbank auch in die Datatable übernommen? Ich denke nicht.
-
03.06.10 22:19 #10
- Registriert seit
- May 2010
- Beiträge
- 14
doch na klar weil nämlich die nr ein autowert ist und somit ich kein txtfeld brauche und somit keine eingaben. cool ne hab ich alleine gemacht.

solche tags?
[Public Class Form3
Dim con As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
Dim da As New OleDb.OleDbDataAdapter
Dim cmb As New OleDb.OleDbCommandBuilder(da)
Dim dset As New DataSet
Dim kst_name As String
Dim kst_verantn As String
Dim kst_verantvorn As String
Dim kst_Nr As Integer
Dim antwort As Integer
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=C:\temp\Kst_Bud.accdb"
cmd.Connection = con
cmd.CommandText = "Select * from Kostenstelle"
da.SelectCommand = cmd
da.Fill(dset)
DataGridView1.DataSource = dset.Tables(0)
'Blendet die Kostenstellen_Nr Spalte aus
DataGridView1.Columns(0).Visible = False
End Sub
Private Sub cmdeinfügen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdeinfügen.Click
If txtkname.Text = "" Then
MsgBox("Bitte einen Kostenstellennamen eingeben!")
ElseIf txtkname.Text = "" Then
MsgBox("Bitte einen Kostenstellennamen eingeben!")
Exit Sub
End If
If txtkverantvorn.Text = "" Then
MsgBox("Bitte Vornamen eingeben!")
Exit Sub
End If
If txtkverantn.Text = "" Then
MsgBox("Bitte Nachnamen eingeben!")
Exit Sub
End If
'If txtkname.Text = DataGridView1.Text Then
'MsgBox("Datensatz bereits vorhanden")
'End If
kst_name = txtkname.Text
kst_verantn = txtkverantn.Text
kst_verantvorn = txtkverantvorn.Text
dset.Tables(0).Rows.Add(kst_Nr, kst_name, kst_verantn, kst_verantvorn)
End Sub
'http://www.ms-office-forum.net/forum/archive/index.php?t-137851.html
Private Sub txtkname_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtkname.KeyPress
Select Case Asc(e.KeyChar)
Case 8, 32, 65 To 90, 97 To 122, 223
' 8 Backspace
' 32 Leerzeichen
' 65-90 Buchstaben (groß)
' 97-122 Buchstaben (klein)
' 223 ß
Case Else
' Alle anderen Eingaben werden unterdrückt
MsgBox("Bitte nur Buchstaben verwenden")
e.Handled = True
End Select
End Sub
'http://www.ms-office-forum.net/forum/archive/index.php?t-137851.html
Private Sub txtverantvorn_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtkverantvorn.KeyPress
Select Case Asc(e.KeyChar)
Case 8, 32, 65 To 90, 97 To 122, 223
' 8 Backspace
' 32 Leerzeichen
' 65-90 Buchstaben (groß)
' 97-122 Buchstaben (klein)
' 223 ß
Case Else
' Alle anderen Eingaben werden unterdrückt
MsgBox("Bitte nur Buchstaben verwenden")
e.Handled = True
End Select
End Sub
'http://www.ms-office-forum.net/forum/archive/index.php?t-137851.html
Private Sub txtkverantn_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtkverantn.KeyPress
Select Case Asc(e.KeyChar)
Case 8, 32, 65 To 90, 97 To 122, 223
' 8 Backspace
' 32 Leerzeichen
' 65-90 Buchstaben (groß)
' 97-122 Buchstaben (klein)
' 223 ß
Case Else
' Alle anderen Eingaben werden unterdrückt
MsgBox("Bitte nur Buchstaben verwenden")
e.Handled = True
End Select
End Sub
Private Sub cmdspeichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdspeichern.Click
antwort = MsgBox("Wollen Sie wirklich speichern?", MsgBoxStyle.YesNo, "Speichervorgang")
If antwort = MsgBoxResult.Yes Then
da.Update(dset.Tables(0))
MsgBox("Daten gespeichert.", , "Speichervorgang")
ElseIf antwort = MsgBoxResult.No Then
MsgBox("Geben Sie Ihre Daten bitte erneut ein.", , "Speichervorgang")
End If
End Sub
Private Sub cmdloeschen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdloeschen.Click
'Löscht den Datensatz in der selektierten Zeile aus der Datenbank
DataGridView1.Rows.Remove(DataGridView1.CurrentRow)
da.Update(dset.Tables(0))
End Sub
Private Sub cmdback_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdback.Click
Hauptmenü.Show()
Me.Hide()
End Sub
Private Sub cmdneuplanung_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdneuplanung.Click
Kostenartenanlage.Show()
Me.Hide()
End Sub
End Class]
-
Du solltest noch entsprechend [ code] oder [/ code] schreiben. Nicht nur [ und ]. Ist dein Problem letzt gelöst?
-
03.06.10 22:22 #12
- Registriert seit
- May 2010
- Beiträge
- 14
nee sorry...wie soll ich denn den code machen, dass er prüft ob der name vorhanden und dann nicht in datagrid einfügt. haste mir das schon gesagt?sorry dass ichd ich so lang aufhalte
-
http://pastebin.com/w0rKyLeC
Da siehst du das, was ich dir schon 3 Mal gesagt habe auch noch in Action. Der Primarykey der Tabelle wird gesetzt. Die Ausgabe des obigen Codes lautet wie folgt:
Diese Exception kannst du abfangen und auswerten.--> Table
Die Spalte 'setting_id' hat die Einschränkung, dass sie eindeutig sein muss. Der
Wert 'Setting1' ist bereits vorhanden.
-
03.06.10 22:51 #14
- Registriert seit
- May 2010
- Beiträge
- 14
danke für deine bemühung...!
Ähnliche Themen
-
C# dataset einfügen aber vorher prüfen ob Daten bereits vorhanden sind
Von nerdherd im Forum .NET Web und KommunikationAntworten: 4Letzter Beitrag: 27.01.11, 12:17 -
Problem bei if-Anweisung bei bereits vorhanden Spalten
Von DEDEX7200Pro im Forum PHPAntworten: 2Letzter Beitrag: 25.07.10, 22:44 -
Funktion zur Überprüfung ob Eintrag bereits vorhanden
Von Papenburger im Forum PHPAntworten: 0Letzter Beitrag: 23.05.07, 11:49 -
Prüfen, ob eine Session-Variabel bereits vorhanden ist
Von d2mike im Forum PHPAntworten: 3Letzter Beitrag: 09.06.06, 22:49 -
[WinAPI] Fensterklasse bereits vorhanden?
Von Surma im Forum C/C++Antworten: 1Letzter Beitrag: 08.06.04, 15:33





Zitieren

Login





