[Access 97/Windows]Textfeld mit leere Zeichnefolge

Hallo an alle,

ich habe folgendes Problem:
Wenn ich einen neu Tabelle anlege und dort im Entwurfsmodus ein neues Textfeld anlege sthet der Wert für leere Zeichnfolge auf Nein. Ich möchte aber das er default mäsig auf Ja steht. Ist dies möglich?
Wennn nicht könnte ich mir ein Makro schreiben welches mir alle textfelder auf Ja stellt.

Vielen Dank im Voraus
Marcel Janus

Hallo Marcel!

Eine allgemeine Einstellung ist IMO nicht möglich! Nichts desto,
kannst du dir eine kleine Funktion erstellen, die dir die
Feldeigenschaft mit DAO ändert:

Function ChangeTextField(sDatabaseName As String)
 On Error GoTo HandleErr
 
 ' drei Objektvariablen
 Dim db As DAO.Database
 Dim tblDef As DAO.TableDef
 Dim fldDef As DAO.Field

 ' Wenn eine Datenbank angegeben wurde, dann
 If Len(sDatabaseName) \> 0 Then
 Set db = DBEngine.Workspaces(0).OpenDatabase(sDatabaseName)
 Else
 'sonst wird die aktuelle genommen
 Set db = CurrentDb()
 End If
 
 ' eine Schleife über alle Tabellen
 For Each tblDef In db.TableDefs
 ' Ausschliessen der Systemtabellen
 If Not ((tblDef.Name Like "USys\*") Or (tblDef.Name Like "MSys\*")) Then
 ' eine Schleife über alle Felder in der Tabelle
 For Each fldDef In tblDef.Fields
 ' Wenn der Feldtyp Text ist, dann
 If fldDef.Type = dbText Then
 ' Wenn die Eigenschaft LeereZeichenfolge auf Nein steht, dann
 If fldDef.Properties("AllowZeroLength").Value = False Then
 ' Eigenschaft ändern
 fldDef.Properties("AllowZeroLength").Value = True
 ' Ausgabe im Direktfenster
 Debug.Print "Name der Tabelle: " & tblDef.Name
 Debug.Print " Name des Feldes: " & fldDef.Name & " - geändert"
 End If
 End If
 ' Nächstes Feld
 Next fldDef
 End If
 ' Nächste Tabelle
 Next tblDef
 
ExitHere:
 ' Speicher freigeben
 If Not db Is Nothing Then db.Close: Set db = Nothing
 Exit Function
 
HandleErr:
 Select Case Err.Number
 Case Else
 MsgBox "Fehler " & Err.Number & ": " & Err.Description, vbCritical, "Modul1.ChangeTextField"
 End Select
 Resume ExitHere
End Function

Aufruf im Direktfenster z.B. mit ?ChangeTextField(""). Achte darauf, dass keine Tabellen offen sind
bzw. kein Zugriff über Formulare, Berichte etc. erfolgt.

Falls du Probleme mit der Umsetzung hast, melde dich :wink:

slg
Manuela

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]