Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' hat
zurück: Bild tauschen Kontrollkästchen weiter: Access 2007 MS-Menüleiste um eigenen Button ergänzen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
indscho
Weiß sich zu helfen, meist jedenfalls ...


Verfasst am:
15. Jan 2013, 20:00
Rufname:

Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' hat - Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' hat

Nach oben
       Version: Office 2007

Guten Abend,
ich benötige eine Funktion, die mir zurückgibt, ob ein Tabellenfeld das Attribut 'Autowert' besitzt. Klingt banal, ich komme aber nicht drauf. Der Funktionsaufruf soll erfolgen über

Code:
isAutoIncrement("tblKunde", "Kundennummer")
wobei i. f. F. Kundennummer das Feld ist, das auf das Attribut 'Autowert' getestet werden soll.

Folgende Funktion habe ich geschrieben, die zwar läuft, aber leider einen Autowert nicht erkennt.

Code:
Function isAutoIncrement(strTable As String, strField As String)
'Überpfrüft, ob ein Feld ein Primärschlüssel ist

    On Error GoTo Err_Handler
   
    Dim dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Dim fld As DAO.field
   
    isAutoIncrement = False
   
    Set dbs = CurrentDb
    Set tdf = dbs.TableDefs(strTable)
   
    For Each fld In tdf.fields
        If fld.Attributes = dbAutoIncrField And fld.Name = strField Then
            isAutoIncrement = True
        End If
    Next
   
Exit_Err:
    Exit Function

Err_Handler:
    MsgBox Err.Description
    Resume Exit_Err
   
End Function


Kann mir bitte jemand helfen?

Vielen Dank im Voraus!

Gru Ingo
derArb
getting better


Verfasst am:
15. Jan 2013, 20:35
Rufname: derArb
Wohnort: Berlin


AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' - AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert'

Nach oben
       Version: Office 2007

Hallo,
hast Du es schon mal versucht mit dem FeldTyp abfragen?

Code:
If fld.Type = 4 Then
...

_________________
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
JMalberg
Es wird so langsam sinnig ...


Verfasst am:
15. Jan 2013, 20:45
Rufname:
Wohnort: Saarbrücken

AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' - AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert'

Nach oben
       Version: Office 2007

Müsste Attributes=17 sein

Da du Tabelle und Feld kennst brauchst du keine Schleife über alle Felder.
debug.? "attributes:", CurrentDb.tabledefs("DerTabellenname").fields("DerFeldname").attributes

Edit: Feldtyp ist es auch nicht. Evtl ein Kombi ?

_________________
Gruß
Jürgen

Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie!
Nouba
nicht ganz unwissend :)


Verfasst am:
15. Jan 2013, 20:49
Rufname:
Wohnort: Berlin

AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' - AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert'

Nach oben
       Version: Office 2007

Hallo,

warum alle Felder abklappern, wenn der Feldname bekannt ist?
Code:
Property Get ThisDb(Optional Force As Boolean) As DAO.Database
  Static db As DAO.Database

  If db Is Nothing Or Force Then Set db = CurrentDb()
  Set ThisDb = db
End Property

Function FieldIsAutoIncremented(TableName As String, FieldName As String)
  On Error Resume Next
  With ThisDb.TableDefs(TableName).Fields(FieldName)
    If Err Then Exit Function 'vbEmpty bei Fehler 3265
    FieldIsAutoIncremented = CBool(.Attributes And dbAutoIncrField)
  End With
End Function

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
MissPh!
Office-VBA-Programmiererin


Verfasst am:
16. Jan 2013, 10:00
Rufname:
Wohnort: NRW


AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' - AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert'

Nach oben
       Version: Office 2007

Hallo,

es fehlt noch die Deklaration des Rückgabewertes (As Boolean) und/oder die Rückgabe von False im Negativfall.

Es scheint zwar auch so zu funktionieren, aber beim Test mit
Code:
MsgBox FieldIsAutoIncremented("tab1", "feld1")
wobei "feld1" in "tab1" nicht existiert, kommt eine leere MsgBox heraus, also weder True noch False.
Aber wie ist es zu erklären, dass bei
Code:
MsgBox FieldIsAutoIncremented("tab1", "feld1") = False
trotzdem Wahr ausgegeben wird - ich versteh's grad nicht. Confused
_________________
Gruß MissPh!
indscho
Weiß sich zu helfen, meist jedenfalls ...


Verfasst am:
16. Jan 2013, 14:34
Rufname:

AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' - AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert'

Nach oben
       Version: Office 2007

Vielen Dank erstmal, die Lösung scheint zu funktionieren, auch wenn ich mir die gleiche Frage stelle wie MissPh.

Kannst du da noch eine Antwort darauf geben, Nouba?

Gruß Ingo
Nouba
nicht ganz unwissend :)


Verfasst am:
16. Jan 2013, 22:29
Rufname:
Wohnort: Berlin

AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' - AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert'

Nach oben
       Version: Office 2007

Hallo Ingo,

ich habe den Rückgabewert der Funktion bewusst als Variant deklatiert (ist ja der Standard in VBA), um einen Fehler (falscher Tabellenname bzw. falscher Spaltenname) ermitteln zu können.
Code:
Dim Result

Result = FieldIsAutoIncremented(...)
If IsEmpty(Result) Then
  'ggf. Fehler behandeln
ElseIf CBool(Result) Then
  'ist es ein Autowertfeld
Else
  'ist es kein Autowertfeld
End If


@MissPh!

VBA castet den Variant der LHS (Left Hand Side) in den Variablentyp der RHS (Right Hand Side).

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.



Variant-Cast.png
 Beschreibung:
 Dateigröße:  8.58 KB
 Angeschaut:  229 mal

Variant-Cast.png


MissPh!
Office-VBA-Programmiererin


Verfasst am:
17. Jan 2013, 14:56
Rufname:
Wohnort: NRW

Re: AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autow - Re: AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autow

Nach oben
       Version: Office 2007

Nouba - 16. Jan 2013, 21:29 hat folgendes geschrieben:
VBA castet den Variant ...
Danke, solche Feinheiten vergess ich immer wieder gern! Smile
_________________
Gruß MissPh!
indscho
Weiß sich zu helfen, meist jedenfalls ...


Verfasst am:
23. Jan 2013, 19:19
Rufname:

AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' - AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert'

Nach oben
       Version: Office 2007

Hallo nochmal,
in Ergänzung zu dem Thema von letzter Woche möchte ich nun wissen, ob ein Feld indiziert (mit 'Ja, ohne Duplikate') ist.

Kann mir jemand dabei helfen, die Funktion von Nouba aus diesem Thread anzupassen? Alleine bekomme ich das nicht hin.

Vielen Dank im Voraus!

Gruß Ingo
indscho
Weiß sich zu helfen, meist jedenfalls ...


Verfasst am:
23. Jan 2013, 19:59
Rufname:

AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' - AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert'

Nach oben
       Version: Office 2007

Selbst ist der Mann ;o)

So hat es funktioniert.

Code:
Function IsUniqueIndex(strTable As String, strField As String) As Boolean
'Überpfrüft, ob ein Feld einen eindeutigen ("Ja, ohne Duplikate") Index hat

    On Error GoTo Err_Handler
   
    Dim Dbs As DAO.Database
    Dim tdf As DAO.TableDef
    Dim idx As DAO.Index
    Dim fld As DAO.field
   
    IsUniqueIndex = False
   
    Set Dbs = CurrentDb
    Set tdf = Dbs.TableDefs(strTable)
   
    For Each idx In tdf.Indexes
        If idx.Unique Then
            For Each fld In idx.fields
                If fld.Name = strField Then
                    IsUniqueIndex = True
                    Exit For
                End If
            Next
        End If
    Next
   
Exit_Err:
    Exit Function

Err_Handler:
    MsgBox Err.Description
    Resume Exit_Err
   
End Function


Vielleicht hilft es ja mal wem anders!

Gruß Ingo
Nouba
nicht ganz unwissend :)


Verfasst am:
23. Jan 2013, 20:05
Rufname:
Wohnort: Berlin


AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert' - AW: Feststellen, ob ein Tabellenfeld das Attribut 'Autowert'

Nach oben
       Version: Office 2007

Hallo,

Code:
Function FieldHasSingleUniqueIndex(TableName As String, FieldName As String) As Boolean
  Dim idx As DAO.Index
 
  On Error Resume Next
 
  For Each idx In ThisDb.TableDefs(TableName).Indexes
    If idx.Fields.Count = 1 Then
      If idx.Fields(0).Name = FieldName Then
        If idx.Unique Then
          FieldHasSingleUniqueIndex = True
          Exit For
        End If
      End If
    End If
  Next idx
End Function

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Autowert aktuelles Jahr in Tabelle einfügen 2 AndreM 1712 19. Dez 2006, 20:27
AndreM Autowert aktuelles Jahr in Tabelle einfügen
Keine neuen Beiträge Access Tabellen & Abfragen: Autowert ändern 0 derhoeppi 815 21. Nov 2006, 13:30
derhoeppi Autowert ändern
Keine neuen Beiträge Access Tabellen & Abfragen: Autowert auch in MS SQL Server? 1 Heike M. 11643 14. Sep 2006, 15:22
Gast1 Autowert auch in MS SQL Server?
Keine neuen Beiträge Access Tabellen & Abfragen: 2 Tabellen vergleichen und Unterschiede feststellen 1 Gast 2029 09. Aug 2006, 16:26
Nouba 2 Tabellen vergleichen und Unterschiede feststellen
Keine neuen Beiträge Access Tabellen & Abfragen: Autowert wieder von 1 beginnen? 1 Svenman_1 892 31. Mai 2006, 16:57
Willi Wipp Autowert wieder von 1 beginnen?
Keine neuen Beiträge Access Tabellen & Abfragen: Frage zum Theme AutoWert 15 TorstenErd 1402 25. Apr 2006, 11:41
Nouba Frage zum Theme AutoWert
Keine neuen Beiträge Access Tabellen & Abfragen: Feld mit AutoWert sinnvoll? 1 Schneehasal18 706 21. März 2006, 10:09
stpimi Feld mit AutoWert sinnvoll?
Keine neuen Beiträge Access Tabellen & Abfragen: Autowert in eine Tabelle übertragen... 4 Mr.E 1602 27. Okt 2005, 08:53
Mr.E Autowert in eine Tabelle übertragen...
Keine neuen Beiträge Access Tabellen & Abfragen: autowert auf 0 setzen 2 heirnele 4353 21. Jul 2005, 12:39
heirnele autowert auf 0 setzen
Keine neuen Beiträge Access Tabellen & Abfragen: ind.CreateField: Zuweisung Felddatentyp "AutoWert" 3 RoWi 4450 30. Jun 2005, 15:16
RoWi ind.CreateField: Zuweisung Felddatentyp "AutoWert"
Keine neuen Beiträge Access Tabellen & Abfragen: Attribut unter gewissen Bedingungen auf "required" 6 Noob 592 06. Apr 2005, 10:46
Noob Attribut unter gewissen Bedingungen auf "required"
Keine neuen Beiträge Access Tabellen & Abfragen: mehrwertiges attribut in access 3 uli 1203 22. Feb 2005, 19:03
stpimi mehrwertiges attribut in access
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: JavaScript