Standartwerte für Tabellenwerte setzen ?

LoMo

Erfahrenes Mitglied
Hallo Community,

ich hab mir für ein Projekt ne kleine Routine geschrieben. Irgendwie hab ich es mit den Nullwerten verbockt -,- und deshalb eine kleine Funktion geschrieben, wo diese berichtigt.

im Moment sieht sie folgend aus:
Code:
    Dim ZWSP_Tabellen As Variant
    Dim ZWSP_Anzahl As Integer
    
    Me.MousePointer = 11
    

    ADOCON.ConnectionTimeout = 0
    ADOCON.CursorLocation = adUseClient
    ADOCON.Open COMADOCon
    
    ' Tabellen Berichtigen
    ZWSP_Tabellen = Array("Tabelle1", _
                            "Tabelle2", _
                            "Tabelle3", _

                            )
                            

    ZWSP_Anzahl = UBound(ZWSP_Tabellen) - LBound(ZWSP_Tabellen) + 1
    
    Ladebalken.Max = ZWSP_Anzahl

    For Z = 0 To ZWSP_Anzahl - 1
        SQL_Suchstring = " SELECT * FROM " & ZWSP_Tabellen(Z) & " "
        ADORS1.Open SQL_Suchstring, ADOCON, adOpenKeyset, adLockPessimistic
        If ADORS1.RecordCount > 0 Then
            ADORS1.MoveFirst
            For X = 1 To ADORS1.RecordCount
                For Y = 0 To ADORS1.Fields.Count - 1
                    If IsNull(ADORS1(Y)) Then
                        ADORS1(Y) = ""
                        End If
                Next Y
                ADORS1.Update
                ADORS1.MoveNext
            Next X
            End If
        ADORS1.Close
        Ladebalken.Value = Z
    Next Z
    
    ADOCON.Close
    Me.MousePointer = 0
    
    Ladebalken.Value = Ladebalken.Max
    Call Programm_Ende
Im moment macht die Funktion folgendes. Es durchläuft jeden Datensatz der oben angegebenen Tabellen und überprüft die Tabellenfelder auf NULL. Ist dieser vorhanden wird er mit einen "" überschrieben.


Ich würde gerne noch einfügen, dass wenn das Feld einen Nullwert aufweißt automatisch auch der Standardwert auf '"" gesetzt wird. Weiß aber nicht wie ich das anstellen soll. Weiß jemand wie ich das einfügen könnte ?


ps. Oh se grad dass ich mich beim Titel verschrieben habe. Tabellenwerte soll Tabellenfelder eigentlich heißen.

mfg
 
Zuletzt bearbeitet:
Hab jetzt mal probiert es einzufügen nach ewigen googlen ^^.

Code:
    Dim ZWSP_Tabellen As Variant
    Dim ZWSP_Anzahl As Integer
    
    Me.MousePointer = 11
    

    ADOCON.ConnectionTimeout = 0
    ADOCON.CursorLocation = adUseClient
    ADOCON.Open COMADOCon
    
    ' Tabellen Berichtigen
    ZWSP_Tabellen = Array("tabelle1", _
                            "tabelle2", _
                            "tabelle3", _
                            )
                            

    ZWSP_Anzahl = UBound(ZWSP_Tabellen) - LBound(ZWSP_Tabellen) + 1
    
    Ladebalken.Max = ZWSP_Anzahl

    For Z = 0 To ZWSP_Anzahl - 1
        SQL_Suchstring = " SELECT * FROM " & ZWSP_Tabellen(Z) & " "
        ADORS1.Open SQL_Suchstring, ADOCON, adOpenKeyset, adLockPessimistic
        If ADORS1.RecordCount > 0 Then
            ADORS1.MoveFirst
            For X = 1 To ADORS1.RecordCount
                For Y = 0 To ADORS1.Fields.Count - 1
                    If IsNull(ADORS1(Y)) And ADORS1.Fields(Y).Type = adVarChar Then
                        SQL_Suchstring2 = "ALTER TABLE " & ZWSP_Tabellen(Z) & "  "
                        SQL_Suchstring2 = SQL_Suchstring2 & " CHANGE " & ADORS1.Fields(Y).Name & " " & ADORS1.Fields(Y).Name & " VarChar(" & ADORS1.Fields(Y).DefinedSize & ") DEFAULT ' ' NOT NULL "
                        ADORS2.Open SQL_Suchstring2, ADOCON, adOpenKeyset
                        ADORS1(Y) = ""
                        End If
                Next Y
                ADORS1.Update
                ADORS1.MoveNext
            Next X
            End If
        ADORS1.Close
        Ladebalken.Value = Z
    Next Z
    
    ADOCON.Close
    Me.MousePointer = 0
    
    Ladebalken.Value = Ladebalken.Max

Leider bringt er beim Update ne Fehlermeldung "Die zu aktualisierende Zeile wurde nicht gefunden. Einige Werte wurden seit dem lesen geändert".

Weiß jemand wie ich den Standardwert der Felder ändern kann ohne Fehlermeldung ? ^^ Der Fehler liegt 100% an den eingefügten Kommando für die Änderung des Standardwertes.... Ich weiß aber nicht wie ich es außerhalb machen kann

mfg
 
Zuletzt bearbeitet:
Hab den Fehler gefunden bzw. einfach umgestellt -,-. Als erstes die Schleife fürs ändern der Standardwerte und dann die Schleife fürs Updaten von Null auf " "

trotzdem danke :)
 
Zurück