vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Relation's mit ADO auswerten, aber wie??? 
Autor: Prian0815
Datum: 20.09.06 11:54

So, erst mal ein freundliches Hallo an alle.
Ivh möchte in einer DB welche einen Verweis auf ADO enthält die Relation's überprüfen. Hintergrund ist, wenn der Anwender in den Grunddaten einen DS löschen möchte, dieser Eintrag aber aber noch in verknüpften Tabellen steht, soll der Anwender eine Warnung erhalten, bzw. die Löschung bestätigen(siehe Code). Ich habe das ganze mit nachfolgendem Coding in einer DAO.mdb schon einmal recht erfolgreich gemacht. Nur gibt es unter ADO den Datentyp Relation nicht mehr, weshalb ich jetzt schon bei der Deklaration scheitere. Ich hoffe mich verständlich ausgedrückt zu haben, und den ein oder anderen Tip zu erhalten.

Private Sub LoeschDS_Click()
On Error GoTo Loesch_Click_Fehler
Steuerelementhintergrundweiss Me
If Me.Dirty Then
MsgBox "Geänderte/neue Datensätze müssen zuerst gespeichert werden," & vbCr & "bevor sie gelöscht werden können!", vbExclamation, "Löschprüfung"
Me.Undo
Exit Sub
End If

If Len(CheckDeleteRelations(Me)) > 0 Then
strmess = CheckDeleteRelations(Me) & vbCr & "Wollen Sie trotzdem löschen?"
If MsgBox(strmess, vbYesNo + vbQuestion, "Löschwarnung") = vbYes Then
DoCmd.SetWarnings False
RunCommand (acCmdDeleteRecord)
DoCmd.SetWarnings True
End If
Else
DoCmd.SetWarnings False
RunCommand (acCmdDeleteRecord)
DoCmd.SetWarnings True
End If
Me.Requery
'auf den 1.Datensatz
DoCmd.GoToRecord acDataForm, Me.Name, acFirst
Schaltflaechenaktualisieren Me
Loesch_Click_Exit:
Exit Sub

Loesch_Click_Fehler:
If Err.Number <> 0 Then
MsgBox Err.Number & " " & Err.Description & " " & "Form!Dienststellen-ErsterDS_Click"
Resume Loesch_Click_Exit
End If
End Sub

Function CheckDeleteRelations(frm As Form) As String
On Error GoTo CheckDeleteRelations_Fehler
Dim dbs As Database
Dim fld As Field, rel As Relation'Hier haperts, da Relations nicht angeboten wird
Dim strwhere, strmfld As String

' Bezug auf aktuelle Datenbank zurückgeben.
Set dbs = CurrentDb
CheckDeleteRelations = ""
' Bestehende Beziehungen suchen.
For Each rel In dbs.Relations
If rel.Table = frm.RecordSource Then
'MsgBox rel.Table & " 1:n verknüpft mit " & rel.ForeignTable
If rel.Attributes And dbRelationDeleteCascade = dbRelationDeleteCascade Then
'MsgBox "mit Löschweitergabe"
strwhere = ""
For Each fld In rel.Fields
'fld.Name enthält den verknüpften Feldnamen der Mastertabelle (1: Seite einer 1:n Beziehung)
'fld.ForeignName enthält den verknüpften Feldnamen der Detailtabelle (:n Seite einer 1:n Beziehung)
'MsgBox fld.Name & " = " & fld.ForeignName
If strwhere = "" Then
strmfld = fld.ForeignName 'das 1. verknüpfte Fremdfeld
End If
'MsgBox frm.RecordsetClone.Fields(Fld.Name).Type
Select Case frm.RecordsetClone.Fields(fld.Name).Type
'MsgBox frm.RecordsetClone.Fields(fld.Name).Value
Case dbText, dbChar, dbMemo
strwhere = strwhere + "[" & fld.ForeignName & "] = '" & frm.RecordsetClone.Fields(fld.Name).Value & "'" & " AND "
Case dbDate, dbTime, dbTimeStamp
strwhere = strwhere + "[" & fld.ForeignName & "] = #" & frm.RecordsetClone.Fields(fld.Name).Value & "#" & " AND "
Case Else
strwhere = strwhere + "[" & fld.ForeignName & "] = " & frm.RecordsetClone.Fields(fld.Name).Value & " AND "
End Select
Next
strwhere = Left(strwhere, Len(strwhere) - 5) ' letztes AND abschneiden

If DCount(strmfld, rel.ForeignTable, strwhere) > 0 Then
CheckDeleteRelations = CheckDeleteRelations & "Tabelle " & rel.ForeignTable & " enthält " & DCount(strmfld, rel.ForeignTable, strwhere) & " verknüpfte Sätze" & vbCr
End If
Else
'MsgBox "ohne Löschweitergabe"
End If
End If
Next
CheckDeleteRelations_Exit:
Set dbs = Nothing
Exit Function
CheckDeleteRelations_Fehler:
If Err.Number <> 0 Then
MsgBox Err.Number & " " & Err.Description & " " & " " & "Form!Prozesse-CheckDeleteRelations"
Resume CheckDeleteRelations_Exit
End If
End Function

Gruß Armin

P.S.: always look on the bright side of Life!
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Relation's mit ADO auswerten, aber wie???1.158Prian081520.09.06 11:54

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel