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
Re: sevDataGrid2: Verlässliches Event gesucht  
Autor: Reinski
Datum: 12.01.06 15:48

Hi Dieter,
hier kommt es auch schon...
Benötigt werden eine DB (db1.mdb) mit Tabelle1 mit den Feldern Key und Text.
Des weiteren ein Form mit SevDataGrid2 (SevGrid1) und einem Button (Command1, Caption="AddNew".
Und folgender Code:
Option Explicit
Private db As DAO.Database
Private DoRefresh As Boolean
 
Private Sub Command1_Click()
    With sevGrid1
        .AddNew
    End With
End Sub
 
Private Sub Form_Load()
    Set db = DBEngine.OpenDatabase(App.Path & "\db1.mdb")
    With sevGrid1
        .DataMode = Mode_Recordset
        .CreateClone = True
        .AllowEdit = True
        .AllowDelete = True
        Set .Recordset = db.OpenRecordset("SELECT * FROM Tabelle1 ORDER BY" & _
          "Text;")
        .Refresh
   End With
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
    db.Close
End Sub
 
Private Sub sevGrid1_AfterAddNew()
    GridRefresh 'funzt immer
End Sub
 
Private Sub sevGrid1_AfterCellEdit(nRow As Long, nCol As Long, ByVal sText As _
  String)
    If DoRefresh Then
        'Vorher gab's keine Gelegenheit, also versuche es jetzt
        DoRefresh = False
        GridRefresh
    End If
End Sub
 
Private Sub sevGrid1_AfterUpdate(ByVal nRow As Long, ByVal nCol As Long, ByVal _
  sText As String)
    If sevGrid1.IsEditMode = MODE_NONE Then
        GridRefresh 'funzt nur wenn nicht im edit mode
    Else
        'ansonsten verschieb's auf das AfterCellEdit-event,
        'aber nur, wenn es keine neue Zeile ist
        If sevGrid1.IsEditMode = MODE_EDIT Then
            DoRefresh = True
        End If
    End If
End Sub
 
Private Sub sevGrid1_ErrorAddNew(ByVal nError As Long, ByVal sDescription As _
  String)
    MsgBox "Fehler " & nError & ": " & vbLf & sDescription, vbCritical, "Fehler"
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)
    MsgBox "Fehler " & nError & ": " & vbLf & sDescription, vbCritical, "Fehler"
End Sub
 
Private Sub GridRefresh()
    With sevGrid1
        Set .Recordset = db.OpenRecordset(.Recordset.Name)
        .Refresh
    End With
End Sub
Ziel ist, dass die Sub GridRefresh() immer ausgeführt wird, nachdem eine neue Zeile hinzugefügt, oder eine bestehende editiert wurde, damit der ORDER-BY-Abschnitt im Select-Statement wieder greift.
Funktioniert in den meisten Fällen auch prima, nur wenn man eine bestehende Zeile editiert und dann die Zeile mit TAB verlässt, kommt es zum Grafik-Chaos (verursacht im AfterCellEdit-Ereignis, weil EditMode immer noch = Mode_Edit).
Gruß!

reinski

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

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
sevDataGrid2: Verlässliches Event gesucht 781Reinski12.01.06 15:24
Re: sevDataGrid2: Verlässliches Event gesucht 471ModeratorDieter12.01.06 15:27
Re: sevDataGrid2: Verlässliches Event gesucht 452Reinski12.01.06 15:48
Re: sevDataGrid2: Verlässliches Event gesucht 445ModeratorDieter12.01.06 21:09
Re: sevDataGrid2: Verlässliches Event gesucht 373Reinski13.01.06 11:34

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