vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

Fragen & Antworten rund um sev-Komponenten
Einfacher ausgedrückt  
Autor: Reinski
Datum: 04.05.05 17:34

Hallo nochmal,
hab grad selbst gestaunt, was ich da für nen Roman geschrieben hab.
Da ich aber immer noch Hilfe bräuchte, liefere ich hier eine wesentlich einfachere Beschreibung zum Nachvollziehen meines Problems.
Der erste Teil bleibt weitgehend gleich - das VB-Projekt ist aber wesentlich simpler...

Man nehme zwei Tabellen in Access(>2000):
MasterTabelle mit den Feldern 
MstKey (Autowert) (Primärschlüssel),
Text (Text)
sowie
DetailTabelle mit den Feldern
DtlKey (Autowert) (Primärschlüssel)
Text (Text)
MstKey (Zahl: Long Integer) (Eigenschaften 'Eingabe erforderlich'=Nein und _
  'Standardwert'="")
Wie man aus der doppelten Existenz des Feldes MstKey schließen kann, soll hierüber eine Beziehung zwischen den Tabellen realisiert werden.
Also wird eine entsprechende Beziehung in Access angelegt:
MasterTabelle.MstKey --> DetailTabelle.MstKey
Aufgrund der Feld-Eigenschaften in der DetailTabelle kann man in diesem Feld einen Bezug auf einen Satz in der MasterTabelle angeben, muss aber nicht, d.h. Null ist ein gültiger Feldinhalt.

Wenn man jetzt das SevDataGrid2 im RecordsetMode verwenden möchte, um Daten in der DetailTabelle einfach zu bearbeiten, so scheitert das Grid an dieser Funktionalität:
Wenn ein Datensatz angezeigt wird, der einen gültigen Wert in MstKey besitzt, so kann dieser Wert nicht mehr herausgelöscht werden.
Er kann nur durch einen anderen gültigen Primärschlüssel aus der MasterTabelle überschrieben werden, aber eben nicht gelöscht (mit Null überschrieben) werden!

Hier das Projekt zum Nachvollziehen:
(Form mit SevDataGrid und Verweis auf DAO3.6)
Option Explicit
 
Dim DB As DAO.Database
 
Private Sub Form_Load()
    On Error GoTo ErrorHandler
    'Datenbank öffnen
    Set DB = DBEngine.OpenDatabase(App.Path & "\db1.mdb")
    'Grid einrichten und Recordset zuweisen (auf DetailTabelle)
    With sevGrid1
        .DataMode = Mode_Recordset
        .AllowEdit = True
        Set .Recordset = DB.OpenRecordset("SELECT * FROM DetailTabelle;")
        .Refresh
    End With
    Exit Sub
ErrorHandler:
    MsgBox Err.Number & ": " & Err.Description, vbCritical, "Fehler", _
      Err.HelpFile, Err.HelpContext
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    On Error Resume Next
    'Datenbank schließen
    DB.Close
End Sub
 
Private Sub sevGrid1_ErrorUpdate(ByVal nRow As Long, ByVal nCol As Long, ByVal _
  sText As String, ByVal nError As Long, ByVal sDescription As String)
    'Fehlermeldung ausgeben
    MsgBox "Fehler " & nError & ": " & sDescription, vbCritical, "Datensatz" & _
      "nicht gespeichert"
End Sub
Für das Projekt muss die DB den Namen 'db1.mdb' tragen und im Projektverzeichnis liegen...

Über Hilfe würde ich mich sehr freuen!
Viele Grüße & Danke schonmal an alle die sich die Mühe machen!

Reinski

Immer noch auf der Suche nach dem "Tu's trotzdem"-Button...

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
SevDataGrid und NULL im ForeignKey1.711Reinski02.05.05 20:01
Re: SevDataGrid und NULL im ForeignKey1.046Reinski02.05.05 20:04
Einfacher ausgedrückt 1.189Reinski04.05.05 17:34
Re: Einfacher ausgedrückt 1.023ModeratorDieter06.05.05 10:20
Re: Einfacher ausgedrückt 1.038Reinski06.05.05 12:55
Re: Einfacher ausgedrückt 1.027ModeratorDieter07.05.05 09:27
Spitze! 999Reinski07.05.05 22:22

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-2025 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