Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

VB Access Datenbank Tabelle leeren

Frage Entwicklung VB for Applications

Mitglied: carp-catcher

carp-catcher (Level 1) - Jetzt verbinden

04.01.2012, aktualisiert 17:35 Uhr, 6234 Aufrufe, 10 Kommentare

Hallo

ich lasse den inhalt einer Datenbank (Access) in einer listbox anzeigen.
Einen in der list box markierten Eintrag lösche ich so:

01.
con.Open() 
02.
            cmd.CommandText = "delete from personen " & 
03.
                "where personalnummer = " & 
04.
                pnummer(ListBox1.SelectedIndex) 
05.
con.Close()
Aber wie leere ich die ganze Tabelle?

Ich danke im Voraus

LG
Mitglied: wiesi200
04.01.2012 um 21:03 Uhr
Hallo,

in dem du deinen SQL Befehl nicht mit dem SelectedIndex der ListBox1 einschränkst.
Bitte warten ..
Mitglied: carp-catcher
04.01.2012 um 21:19 Uhr
danke für die schnelle Antwort

hört sich gut an .... aber ich weiß nicht so recht wie es richtig geht vll kannst mir da noch einmal helfen

habe
con.Open()
cmd.CommandText = "delete from personen " &
"where personalnummer = " &
pnummer(ListBox1)
con.Close()
und

con.Open()
cmd.CommandText = "delete from personen " &
"where personalnummer = " &
pnummer(ListBox1.Items)
con.Close()

probiert ...

will aber noch nicht so recht ....
Bitte warten ..
Mitglied: NetWolf
04.01.2012 um 21:51 Uhr
Moin Moin,

eine "where" Bedingung ist eine Einschränkung! Also lasse sie einfach weg.

Der richtige SQL-Befehl wäre dann:
delete * from personen

Grüße aus Rostock
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: carp-catcher
04.01.2012 um 23:09 Uhr
hmm danke dir aber ...


con.Open()
cmd.CommandText = "delete * from personen"
con.Close()


sollte eigl funktionieren ... tut aber nicht


weiß jemand einen rat ?
Bitte warten ..
Mitglied: Biber
05.01.2012 um 16:20 Uhr
Moin carp-catcher,

machst du irgendwo auch ein Execute mit dem cmd.CommandText?
Zu sehen ist doch nur das Befüllen der Textvariablen mit dem Statement.

poste doch bitte den ganzen Quelltext.

Grüße
Biber
Bitte warten ..
Mitglied: carp-catcher
06.01.2012 um 14:08 Uhr
hallo,


ich kopier mal rein.

01.
Imports System.Data.OleDb 
02.
 
03.
Public Class Form1 
04.
    Dim con As New OleDbConnection 
05.
    Dim cmd As New OleDbCommand 
06.
    Dim reader As OleDbDataReader 
07.
    Dim pnummer As New ArrayList 
08.
 
09.
 
10.
 
11.
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
12.
        con.ConnectionString = 
13.
            "Provider=Microsoft.Jet.OLEDB.4.0;" & 
14.
            "Data Source=C:\Temp\firma.mdb" 
15.
        cmd.Connection = con 
16.
    End Sub 
17.
 
18.
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
19.
        AlleSehen() 
20.
    End Sub 
21.
 
22.
    Private Sub AlleSehen() 
23.
        Try 
24.
            con.Open() 
25.
            cmd.CommandText = "select * from personen" 
26.
            Ausgabe() 
27.
        Catch ex As Exception 
28.
            MessageBox.Show(ex.Message) 
29.
        End Try 
30.
        con.Close() 
31.
 
32.
        nachname.Text = "" 
33.
        vorname.Text = "" 
34.
        id.Text = "" 
35.
        gehalt.Text = "" 
36.
        geburtstag.Text = "" 
37.
    End Sub 
38.
 
39.
    Private Sub Ausgabe() 
40.
        reader = cmd.ExecuteReader() 
41.
        ListBox1.Items.Clear() 
42.
        pnummer.Clear() 
43.
        Do While reader.Read() 
44.
            ListBox1.Items.Add(reader("name") & " # " & 
45.
                reader("vorname") & " # " & 
46.
                reader("personalnummer") & " # " & 
47.
                reader("gehalt") & " # " & 
48.
                reader("geburtstag")) 
49.
            pnummer.Add(reader("personalnummer")) 
50.
        Loop 
51.
        reader.Close() 
52.
    End Sub 
53.
 
54.
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
55.
 
56.
        Dim anzahl As Integer 
57.
 
58.
        Try 
59.
            con.Open() 
60.
            cmd.CommandText = 
61.
                "insert into personen " & 
62.
               "(name, vorname, personalnummer, " & 
63.
               "gehalt, geburtstag, bild) values ('" & 
64.
               nachname.Text & "', '" & 
65.
              vorname.Text & "', " & 
66.
               id.Text & ", " & 
67.
               gehalt.Text.Replace(",", ".") & 
68.
               ", '" & geburtstag.Text & "', '" & bildpfad.Text & "')" 
69.
            MessageBox.Show(cmd.CommandText) 
70.
 
71.
            anzahl = cmd.ExecuteNonQuery() 
72.
            If anzahl > 0 Then 
73.
                MessageBox.Show( 
74.
                    "Ein Datensatz eingefügt") 
75.
 
76.
            End If 
77.
        Catch ex As Exception 
78.
            MessageBox.Show(ex.Message) 
79.
            MessageBox.Show("Bitte mindestens einen" & 
80.
                " Namen, eine eindeutige Personal" & 
81.
                "nummer und ein gültiges Geburts" & 
82.
                "datum eintragen") 
83.
        End Try 
84.
        con.Close() 
85.
 
86.
 
87.
 
88.
        
89.
 
90.
 
91.
 
92.
 
93.
    End Sub 
94.
 
95.
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 
96.
 
97.
 
98.
        Dim anzahl As Integer 
99.
 
100.
        Try 
101.
            con.Open() 
102.
            cmd.CommandText = 
103.
                "update personen set " & 
104.
               "name = '" & nachname.Text & "', " & 
105.
               "vorname = '" & vorname.Text & 
106.
               "', " & "personalnummer = " & 
107.
               id.Text & ", " & 
108.
               "gehalt = " & 
109.
               gehalt.Text.Replace(",", ".") & 
110.
               ", " & "geburtstag = '" & 
111.
               geburtstag.Text & "' " & 
112.
               "where personalnummer = " & 
113.
               pnummer(ListBox1.SelectedIndex) 
114.
 
115.
 
116.
            anzahl = cmd.ExecuteNonQuery() 
117.
            If anzahl > 0 Then 
118.
                MessageBox.Show("Datensatz geändert") 
119.
            End If 
120.
        Catch ex As Exception 
121.
            MessageBox.Show(ex.Message) 
122.
            MessageBox.Show("Bitte einen Datensatz" & 
123.
                " auswählen und mindestens einen" & 
124.
                " Namen, eine eindeutige ID" & 
125.
                "und ein gültiges Geburts" & 
126.
                "datum eintragen") 
127.
        End Try 
128.
        con.Close() 
129.
 
130.
        AlleSehen() 
131.
 
132.
    End Sub 
133.
 
134.
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 
135.
 
136.
 
137.
        Dim anzahl As Integer 
138.
        If id.Text = "" Then 
139.
            MessageBox.Show( 
140.
                "Bitte einen Datensatz auswählen") 
141.
            Exit Sub 
142.
        End If 
143.
 
144.
        If MessageBox.Show("Wollen Sie den ausge" & 
145.
               "wählten Datensatz wirklich löschen?", 
146.
               "Löschen", MessageBoxButtons.YesNo) = 
147.
                    DialogResult.No Then 
148.
            Exit Sub 
149.
        End If 
150.
 
151.
        Try 
152.
            con.Open() 
153.
            cmd.CommandText = "delete from personen " & 
154.
                "where personalnummer = " & 
155.
                pnummer(ListBox1.SelectedIndex) 
156.
 
157.
 
158.
            anzahl = cmd.ExecuteNonQuery() 
159.
            If anzahl > 0 Then 
160.
                MessageBox.Show("Datensatz gelöscht") 
161.
            End If 
162.
        Catch ex As Exception 
163.
            MessageBox.Show(ex.Message) 
164.
        End Try 
165.
        con.Close() 
166.
 
167.
        AlleSehen() 
168.
 
169.
 
170.
    End Sub 
171.
 
172.
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click 
173.
 
174.
 
175.
        Try 
176.
            con.Open() 
177.
            cmd.CommandText = 
178.
                "select * from personen where" & 
179.
                " name like '%" & nachname.Text & "%'" 
180.
            Ausgabe() 
181.
        Catch ex As Exception 
182.
            MessageBox.Show(ex.Message) 
183.
        End Try 
184.
        con.Close() 
185.
 
186.
 
187.
    End Sub 
188.
 
189.
    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged 
190.
        Try 
191.
 
192.
            con.Open() 
193.
            cmd.CommandText = "select * from personen" & 
194.
                " where personalnummer = " & 
195.
                pnummer(ListBox1.SelectedIndex) 
196.
 
197.
            reader = cmd.ExecuteReader() 
198.
            reader.Read() 
199.
 
200.
            nachname.Text = reader("name") 
201.
            vorname.Text = reader("vorname") 
202.
            id.Text = 
203.
                reader("personalnummer") 
204.
            gehalt.Text = reader("gehalt") 
205.
            geburtstag.Text = reader("geburtstag") 
206.
 
207.
            reader.Close() 
208.
        Catch ex As Exception 
209.
            MessageBox.Show(ex.Message) 
210.
        End Try 
211.
        con.Close() 
212.
 
213.
    End Sub 
214.
 
215.
 
216.
     
217.
' button 6 soll die datenbank leeren 
218.
 
219.
    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click 
220.
 
221.
 
222.
 
223.
       
224.
 
225.
        
226.
            con.Open() 
227.
        cmd.CommandText = "delete from personen" 
228.
 
229.
            con.Close() 
230.
             
231.
       
232.
 
233.
 
234.
 
235.
 
236.
 
237.
 
238.
    End Sub 
239.
 
240.
    
241.
 
242.
 
243.
    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click 
244.
 
245.
        OpenFileDialog1.Filter = "Images Files (*.bmp, *.gif, *.jpg)|*.bmp;*.gif;*.jpg" 
246.
 
247.
        If OpenFileDialog1.ShowDialog = DialogResult.OK Then 
248.
 
249.
            bildpfad.Text = OpenFileDialog1.FileName 
250.
        Else 
251.
            Exit Sub 
252.
        End If 
253.
 
254.
    End Sub 
255.
 
256.
 
257.
End Class

sorry das er code so lang ist ...


grüße
Bitte warten ..
Mitglied: Biber
06.01.2012 um 18:07 Uhr
Moin capri-fischer,

in den Zeilen 152 bis ca. Zeile 164 (dem End Try des Delete-Blocks) ist doch vorgekaspert, wie es bei dir aussehen muss.
Kopierie den (fast vollständig fehlenden Code) in deinen Dummy-Block "Button6_Click()" von Zeile 219-232.

Aber: erst nachdem du verstanden hast, wie es im o.a. Delete-UseCase oder auch im Insert-Usecase (ab Zeile 58ff gestrickt ist.

Frage nebenbei:
Haben eure Ober-EntwicklerInnen euch weissgemacht, dass einem die Haare ausfallen oder ein sechster Zeh am linken Fuss wächst, falls man Kommentarzeilen in vorhandenen Codebrei einfügt?
Oder dass es sieben Jahre regnen wird, falls mal der Sinn und Zweck eines einzelnen Subs in einem Halbsatz im Klartext eingetragen wird?

Codequalität lässt sich nur in zwei Masseinheiten sprachunabhängig messen.
Im Anteil der Kommentarzeilen am Gesamtsourcecode oder in WTFs pro Codezeile.

Der Code oben käme bei beiden Methoden nicht gut weg.

Ich finde es ein starkes Stück, dass jemand dir als Einsteiger einen derart lieblos runtergeleierten Spaghetticode vor die Füße gekippt hat - und zwar nicht zum Glattziehen und Nachdokumentieren, sondern zum Erweitern (=also um Aufbauen auf das vorhandene).

-> So was wäre bei uns (toi toi toi) nicht "produktiv gegangen".

Grüße
Biber
Bitte warten ..
Mitglied: carp-catcher
07.01.2012 um 23:07 Uhr
abend,


wie die befehle in meinem code funktionieren weiß ich schon
.... sagt mir mein schlaues buch ^^

wenn ich

[code]
con.Open()
cmd.CommandText = "delete from personen " & "where personalnummer = " & pnummer(ListBox1.SelectedIndex)
anzahl = cmd.ExecuteNonQuery()

If anzahl > 0 Then
MessageBox.Show("Datensatz gelöscht")
End If
[/code]

in mein button 6 ereigniss kopiere(welches alles löschen soll) und ausfühere löscht er den ausgewählten index.
Brauch ich net zu testen um das zu wissen.
Was mir allerdings grad einfällt .... kann ich nicht auch jede Zeile einzeln löschen.
Mit for each item sollte das ja gehen.
Ich werde es morgen testen und poste dann.


grüße
carp
Bitte warten ..
Mitglied: Biber
07.01.2012 um 23:55 Uhr
Moin carp-dingser,

mach es doch nicht so kompliziert.
Ich meinte natürlich, den "Delete-einen-Satz"-Fall sinngemäß zu übernehmen.
Also mit dem angepassten Delete-Statement ohne WHERE-Clause.
Oder meinetwegen mit einem "Where (1=1)", wenn es dir ohne WHERE-Bedingung zu unvollständig aussieht.

Die wesentliche Verbesserung zu dem von dir geposteten Zustand ist doch, dass das von NetWolf liebevoll vorbereitete Statement nun auch tatsächlich ausgeführt wird mit cmd.ExecuteNonQuery().

Ausserdem solltest du nicht eine Fehlermeldung auswerfen, wenn keine Datensätze gelöscht wurden, sondern hier (genau wie auch in den anderen INSERT, UPDATE, DELETE-Fällen) prüfen, ob es einen Fehler (SQLERROR) gab.

Und bitte bitte endlich für dich und andere das Gestrunkele nachdokumentieren, dann zwei Schritt zurücktreten, in Ruhe schauen, was da abgeht und dann ausmisten, diesen Bläh-Code.

Irgendetwas Gefundenes durch beharrliches Copy & Paste ohne eigene Auseinandersetzung mit dem Thema zu einer Doktorarbeit hochstilisieren zu wollen - das hat auch bei anderen nicht geklappt.

Grüße
Biber
Bitte warten ..
Mitglied: carp-catcher
08.01.2012 um 18:22 Uhr
abend ....

wie kommt man denn auf carp-dingser :D ... egal ^^
Also erstmal, ich mache VB noch nicht lange und bin noch in der lern Phase ... deswegen hab ich mich ja hier im Forum angemeldet ;)
Ja ich weiß der code ist ein bissl unübersichtlich .... aber da gibts doch nen schönen Spruch.
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.
:D
Ich bedanke mich bei euch allen
Ich habe es so gemacht wie ihr gesagt habt.

01.
con.Open() 
02.
cmd.CommandText = "delete * from personen" 
03.
cmd.ExecuteNonQuery() 
04.
'MessageBox.Show(cmd.CommandText) 
05.
con.Close()
Extra für biber ohne LEERZEICHEN ....


LG carp
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
SAN, NAS, DAS
gelöst Access Datenbank auf einer (Synology) NAS? (4)

Frage von garack zum Thema SAN, NAS, DAS ...

Datenbanken
Access Datenbank mit Rechnungen und Summenbildung möglich? (1)

Frage von Stefan007 zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...