Visual Basic - Access Datenbankverbindung
k-sprEE 21.01.2004 - 21:40 827 10
k-sprEE
Bloody Newbie
|
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.JPGAusgangssituation: 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 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
AdministratorLegends never die
|
@ 2te frage: wie schauts mit der table struktur aus.. die wäre hier interessanter
|
Ringding
Pilot
|
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
|
|
k-sprEE
Bloody Newbie
|
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
|
Schau halt nach, was du bei der Tabelle für Indizes gesetzt hast, dann wirst du schon draufkommen.
|
mat
AdministratorLegends never die
|
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
|
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? ![:)](/images/smilies/smile.gif) weißt du syntax? thx mal an alle inzwischen... ja das delte da kommt immer folgender fehler: http://mitglied.lycos.de/freddi123/delete.jpgder quellcode is: der code is von KUNDEN das heisst, es hat nix mit bestellung und so zu tun =) 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
AdministratorLegends never die
|
http://msdn.microsoft.com/library/d...nsert___sql.aspich 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
|
Die Verknüpfungen kann man nicht umgehen mit SQL Statements, das würde sie ja völlig sinnlos machen.
|
k-sprEE
Bloody Newbie
|
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 ![:)](/images/smilies/smile.gif) ich geb auch noch die Kundenabfrage dazu zur besseren verständniss http://mitglied.lycos.de/freddi123/abfkunden.jpgwah und sowas is abschlussprüfungsprojekt ![:D](/images/smilies/biggrin.gif) ![:)](/images/smilies/smile.gif) lg
Bearbeitet von k-sprEE am 22.01.2004, 01:16
|