"We are back" « oc.at

Visual Basic - Access Datenbankverbindung

k-sprEE 21.01.2004 - 21:40 827 10
Posts

k-sprEE

Bloody Newbie
Registered: Oct 2003
Location: WIEN
Posts: 20
Hi, ich möchte Datensätze in Access mit VB gerne löschen - ich verwalte die Daten Bank mit ADO 6.0 .

ich sprech alle schon mit den textboxen direkt an, das heisst ich brauch zb für das speichern nur

adodc1.recordset.addnew

dann daten in die Textfelder eintragen

und

adodc1.recordset.update

das funkioniert ohne problem - nur jetzt würd ich halt gerne wissen wie ich einen datensatz löschen kann
oder welche voraussetzungen gegeben sein müssen um:

adodc1.recordset.delete verwenden zu können...

'#########2te Frage###########

des weiteren würd ich gern wissen was das für ein fehler is :

http://mitglied.lycos.de/freddi123/vbfehler.JPG

Ausgangssituation: Ich versuche mit der Form Bestellungen einen neuen Datensatz zu erstellen eben wie vorher mit add new und update ich sprech die datensätze mit adodc und SQL an
hier ist der SQL CODE
Zitat
SELECT Ausgangsbestellung.[AusgangsBestell-ID], Zutaten.[Zutaten-ID], Zutaten.Preis, Lieferanten.[Lieferanten-ID], ZutatenBestellung.Menge, Ausgangsbestellung.Geliefert, Ausgangsbestellung.Datum

ja falls es fragen gibt einfach fragen

tia !

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
@ 2te frage: wie schauts mit der table struktur aus.. die wäre hier interessanter

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Du hast einen unique Index gesetzt, der das Eintragen des neuen Datensatzes verhindert, weil dieser einen schon bestehenden Schlüssel hat.

k-sprEE

Bloody Newbie
Registered: Oct 2003
Location: WIEN
Posts: 20

k-sprEE

Bloody Newbie
Registered: Oct 2003
Location: WIEN
Posts: 20
Zitat von Ringding
Du hast einen unique Index gesetzt, der das Eintragen des neuen Datensatzes verhindert, weil dieser einen schon bestehenden Schlüssel hat.

ok und wie find ich raus welchen index ich da genau genommen hab - siehst du das zb aus den beziehungen raus vl? oder sooll ich dir noch irgendwas geben danke

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Schau halt nach, was du bei der Tabelle für Indizes gesetzt hast, dann wirst du schon draufkommen.

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
Zitat
SELECT Ausgangsbestellung.[AusgangsBestell-ID], Zutaten.[Zutaten-ID], Zutaten.Preis, Lieferanten.[Lieferanten-ID], ZutatenBestellung.Menge, Ausgangsbestellung.Geliefert, Ausgangsbestellung.Datum

1. frage: zu delete.. vorraussetzungen? du solltest am richtigen recordset sein und es sollte kein benutzer den table locken. sonst müsst alles passen.

2. frage: warum hast du uns ein unvollständiges SELECT da hingepflastert? versteh ich irgendwie nicht. dachte du wolltest einen datensatz adden..

btw: ich hab die erfahrung gemacht, dass es einfacher ist für gewisse dinge mit sql zu arbeiten, als die apibefehle zu verwenden.. eben alles was nichts mit der datengekoppelten userinterface zu tun hat.

k-sprEE

Bloody Newbie
Registered: Oct 2003
Location: WIEN
Posts: 20
SELECT Ausgangsbestellung.[AusgangsBestell-ID], Zutaten.[Zutaten-ID], Zutaten.Preis, Lieferanten.[Lieferanten-ID], ZutatenBestellung.Menge, Ausgangsbestellung.Geliefert, Ausgangsbestellung.Datum
FROM Zutaten INNER JOIN (Lieferanten INNER JOIN (Ausgangsbestellung INNER JOIN ZutatenBestellung ON Ausgangsbestellung.[AusgangsBestell-ID] = ZutatenBestellung.[Ausgangsbestellung-ID]) ON Lieferanten.[Lieferanten-ID] = Ausgangsbestellung.[Lieferanten-ID]) ON Zutaten.[Zutaten-ID] = ZutatenBestellung.[Zutaten-ID];


das is das SQL select!

mit SQL arbeiten, meinst du die datenstätze mit sql adden immer?

das is doch "insert" oder? :)
weißt du syntax?

thx mal an alle inzwischen...

ja das delte da kommt immer folgender fehler:

http://mitglied.lycos.de/freddi123/delete.jpg

der quellcode is:

der code is von KUNDEN das heisst, es hat nix mit bestellung und so zu tun =)

Zitat
Private Sub Form_Load()

'###########LOCKEN DER TEXTFELDER############

Filiale.Locked = True
KundPLZ.Locked = True
KundStrasse.Locked = True
KundTel.Locked = True
KundOrt.Locked = True
KundFax.Locked = True
KundEmail.Locked = True
KundSuchbez.Locked = True





'################FÜLLEN DER LISTBOX################

While Not adckundlist.Recordset.EOF
KundList.AddItem adckundlist.Recordset.Fields("Filiale").Value
adckundlist.Recordset.MoveNext
Wend
KundList.Enabled = True



End Sub

Private Sub KundDEL_Click()
adcKunden.Recordset.Delete

End Sub

'#############Listbox Klicken##################
Private Sub KundList_Click()
adcKunden.Recordset.MoveFirst
Dim SQL As Long
If KundList.Enabled = False Then Exit Sub
SQL = KundList.ListIndex
adcKunden.Recordset.Move SQL
If SQL = -1 Then Exit Sub

End Sub

Private Sub Kundaendern_Click()
Kundaendern.Caption = "Ändern"


adcKunden.Recordset.Update

Filiale.Locked = False
KundPLZ.Locked = False
KundOrt.Locked = False
KundStrasse.Locked = False
KundTel.Locked = False
KundFax.Locked = False
KundEmail.Locked = False
KundSuchbez.Locked = False




End Sub

Private Sub kundneu_Click()
Kundaendern.Caption = "Speichern"



adcKunden.Recordset.AddNew
Filiale.Locked = False
KundPLZ.Locked = False
KundStrasse.Locked = False
KundTel.Locked = False
KundFax.Locked = False
KundEmail.Locked = False
KundSuchbez.Locked = False



End Sub

Private Sub KundSchliessen_Click()

End
'unload me
End Sub

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25538
http://msdn.microsoft.com/library/d...nsert___sql.asp

ich glaube, dass bei deinem dbaufbau etwas nicht stimmt.. wenn du diese fehlermeldung bekommst, dann heisst das, dass er dich diesen datensatz nicht löschen lässt weil sonst abhängige tables (also die joins) nicht mehr verknüpft wären. das kannst du IMO mit einer reinen sql abfrage umgehen (bin mir da aber nicht ganz sicher), is aber nicht sehr intelligent weil deine db dann inkonsistent werden würde. ich empfehle also dass du dir die verknüpfungen usw. nochmal anschaust um herauszufinden, welche abhängigkeiten wirklich nötig sind.

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Die Verknüpfungen kann man nicht umgehen mit SQL Statements, das würde sie ja völlig sinnlos machen.

k-sprEE

Bloody Newbie
Registered: Oct 2003
Location: WIEN
Posts: 20
jop ich bin draufgekommen, es is wegen der PLZ tabelle - die ich sowieso ned ganz versteh..
die hat ne PLZ - ID dann die PLZ , ORT und BUNDESLAND

also ich weiß ned was ich bei den abfragen nehmen sollen die PLZ - ID Von der kundeN Tabelle -- dann hab ich in der form nur eine 2-3 stellige nummer stehn halt die PLZ ID weil die mit refientieller integrität mit der PLZ ID der PLZ Tabelle verbunden ist... alles ur komsich
wenn ichs mit der verbind von der PLZ tabelle kann ich keinen neuen datensatz erstellen..

ich hatte es immer so das man die PLZ ID eingibt und der ort sich dann automatisch dazu schreibt weil den hab ich immmer mit der PLZ Tabelle verbunden gehabt... das war der fehler.

jetzt geht das delete zwar aber der Ort passt ned weil ich hab jetzt in der Kundentabelle einfach ein "ort" hinzugefügt... aber es sollte ja so sein das im ort automatisch was reingeschrieben wird also alles bissl komplex..

/e die Beziehungen sind eh oben :) ich geb auch noch die Kundenabfrage dazu zur besseren verständniss

http://mitglied.lycos.de/freddi123/abfkunden.jpg

wah und sowas is abschlussprüfungsprojekt :D

:)

lg
Bearbeitet von k-sprEE am 22.01.2004, 01:16
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz