Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
DefaultValue zuweisen
zurück: dynamische Verknüpfung mit Abfrage aus externer Datenbank weiter: Access 2007 altes Menü bearbeiten 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
Isok
Einsteiger


Verfasst am:
03. Sep 2013, 11:53
Rufname:

DefaultValue zuweisen - DefaultValue zuweisen

Nach oben
       Version: Office 2010

Hallo zusammen,

ich habe etwas VBA-Code zum Importieren von Daten aus Excel in die Tabelle tblTest geschrieben. Klappt.
Nun möchte ich Datum des Uploads und den User in der Tabelle festhalten. Das mit dem Datum klappt wunderbar indem ich den Standardwert auf Jetzt() setzte.
Allerdings klappt es mit dem User nicht über Standardwert. Habe daher folgenden Code in ein Modul geschrieben:

Code:

Public Function Standardwert_setzen()
     Dim db As Database
     Dim td As TableDef
     Dim fld As Field

     Set db = CurrentDb() 'Verwendet die aktuelle Datenbank
     Set td = db.TableDefs("tblTest")
     Set fld = td.Fields("User")
     fld.DefaultValue = CurrentUser() 'Zuweisung zum Standardwert

     Set db = Nothing 'Gibt den Speicherbereich wieder frei
End Function


Die Idee ist nun über ein Autoexec-Makro mit AusführenCode und Standardwert_setzen() zu arbeiten.

Habe dabei folgende Probleme:
- beim Öffnen der DB: Access kann den eingegebenen Namen "Standardwert_setzen" nicht finden
- im Code selbst bei .DefaultValue: Methode oder Datenobjekt nicht gefunden

Was mache ich nur falsch? Sad
Blackpit2013
Gast


Verfasst am:
03. Sep 2013, 12:15
Rufname:


AW: DefaultValue zuweisen - AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Zitat:
Allerdings klappt es mit dem User nicht über Standardwert.

CurrentUser macht auch nur Sinn, wenn die DB mit einer Arbeitsgruppendatei gestartet wird, ansonsten ist CurrentUser immer "Admin"
Setze mal als Standardwert
Code:
Umgebung$("USERNAME")

Das klappt und liefert Dir den User der Umgebungsvariable.
Wenn Du es "sicherer" haben willst, kannst Du den angemeldeten User per API-Funktion ermitteln und die Funktion als Standardwert einsetzen.

HTH
Blackpit2013
Gast


Verfasst am:
03. Sep 2013, 12:24
Rufname:

AW: DefaultValue zuweisen - AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Der Eintrag als Standardwert muss wie folgt aussehen:
Code:
=Umgebung$("USERNAME")


HTH
Isok
Einsteiger


Verfasst am:
03. Sep 2013, 12:51
Rufname:

AW: DefaultValue zuweisen - AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Habe den Code geändert:
Code:

Public Function Standardwert_setzen()
     Dim db As Database
     Dim td As TableDef
     Dim fld As Field

     Set db = CurrentDb() 'Verwendet die aktuelle Datenbank
     Set td = db.TableDefs("tblTest")
     Set fld = td.Fields("User")
     fld.DefaultValue = Umgebung$("USERNAME") 'Zuweisung zum Standardwert

     Set db = Nothing 'Gibt den Speicherbereich wieder frei
End Function


Jetzt wird "Umgebung$" blau hinterlegt und es gibt die Fehlermeldug "Sub oder Function nicht definiert".

Wenn ich statt Umgebung Environ schreibe, bleibt es bei der Fehlermeldung "Methode oder Datenobjekt nicht gefunden".
(Wenn ich fld. eingebe wird auch nicht DefaultValue angeboten.)
Blackpit2013
Gast


Verfasst am:
03. Sep 2013, 13:02
Rufname:


AW: DefaultValue zuweisen - AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Du sollst das auch nicht per VBA zuweisen, sondern in der Tabellendefinition als Standardwert hinterlegen.
Per VBA wäre es im übrigen:
Code:
Environ$("USERNAME")


HTH
Isok
Einsteiger


Verfasst am:
03. Sep 2013, 13:44
Rufname:

AW: DefaultValue zuweisen - AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Das habe ich ebenfalls probiert. Klappt aber leider nicht.
Wenn ich als Standardwert in der Tabelle
Code:
Umgebung$("USERNAME")

eingebe, erhalte ich die Fehlermeldung:
"Unbeannte Funktion 'Eviron$' im Gültigkeitsbereich oder Standardwert in 'tblTest.User'."

Soweit ich weiß, steht die Funktion nicht für die Verwendung als Standardwert zur Verfügung.
Blackpit
Im Profil kannst Du frei den Rang ändern


Verfasst am:
03. Sep 2013, 16:09
Rufname:

AW: DefaultValue zuweisen - AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Blackpit2013 hat folgendes geschrieben:
Der Eintrag als Standardwert muss wie folgt aussehen:

Code:
=Umgebung$("USERNAME")

Das hast Du so als Standardwert in der Tabelle eingetragen?
Zitat:
Soweit ich weiß, steht die Funktion nicht für die Verwendung als Standardwert zur Verfügung.

Woher weißt Du das?

HTH
Isok
Einsteiger


Verfasst am:
03. Sep 2013, 17:08
Rufname:

Re: AW: DefaultValue zuweisen - Re: AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Blackpit - 03. Sep 2013, 16:09 hat folgendes geschrieben:
Blackpit2013 hat folgendes geschrieben:
Der Eintrag als Standardwert muss wie folgt aussehen:

Code:
=Umgebung$("USERNAME")

Das hast Du so als Standardwert in der Tabelle eingetragen?

Ja, habe ich exakt so eigetragen.

Zitat:

Zitat:
Soweit ich weiß, steht die Funktion nicht für die Verwendung als Standardwert zur Verfügung.

Woher weißt Du das?

HTH


Ich habe hier: http://support.microsoft.com/kb/508386/de gelesen,
dass programmiert werden muss um den aktuellen Benutzer als Standardwert setzen zu können.

Meine ursprüngliche Idee war ja auch das so zu machen wie du vorgeschlagen hast.
Blackpit
Im Profil kannst Du frei den Rang ändern


Verfasst am:
03. Sep 2013, 17:45
Rufname:

AW: DefaultValue zuweisen - AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Question
Seltsam, ich habe es heute explizit ausprobiert, allerdings auf einem anderen System.
Dort konnte ich auf die Funktion "Environ" auch über den Ausdrucksgenerator zugreifen und den (Environ)-Benutzer als Standardwert hinterlegen. Dieser wurde auch entsprechend aufgelöst (=Umgebung("USERNAME")). Auf dem jetzigen System geht es nicht mehr. Sonst hätte ich es nicht geschrieben.
Aber wie bereits mitgeteilt, sollte es mit Environ$("USERNAME") per VBA funktionieren.

Gruß

BP
Isok
Einsteiger


Verfasst am:
04. Sep 2013, 09:25
Rufname:

AW: DefaultValue zuweisen - AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Leider klappt es auch mit
Code:
 fld.DefaultValue = Environ("username")

nicht.

Ausführen des Codes erzeugt die gewohnte Fehlermeldung "Methode oder Datenobjekt nicht gefunden".
mac_k
Im Profil kannst Du frei den Rang ändern


Verfasst am:
04. Sep 2013, 10:07
Rufname:

AW: DefaultValue zuweisen - AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Hi,

also das man (standardmäßig) Environ nicht mehr als "Default Value" in einem Tabellenfeld verwenden kann ist glaube ich ab Office 2007 so.

Hintergrund hierfür ist der sogenannte SandBox-Mode in dem die Datenbanken seit A2007 ausgeführt werden. Diesen SandBox-Mode kann man für alle Access-Datenbanken abstellen (man sollte dies aber nicht tun!)

Über folgenden RegistryKey kannst du ihn für Access-Anwendungen deaktivieren
HKLM\Software\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\SandBoxMode

Standardmäßig ist der Wert auf 3 gesetzt
Setzt du den Wert auf 2, so wird der SandBoxMode für alle Access Anwendungen deaktiviert, bleibt aber für die restlichen Office-Anwendungen aktiv.

Genauer in das Thema kannst du dich über folgenden Link einlesen.
http://office.microsoft.com/en-us/access-help/functions-and-properties-in-access-2007-blocked-by-sandbox-mode-HA001230190.aspx#BM1

Nach dem Setzen auf 2 kannst du in den Tabellen wieder Environ und andere unsichere Ausdrücke verwenden!

Hinweis:
Durch die Deaktivierung des SandBoxModes deaktivierst bzw. aktivierst du diverse unsichere Funktionen/Properties welche nicht direkt ausgeführt/verwendet werden sollten. Ist also für die Sicherheit nicht wirklich dienlich...


Ich sage es hier nochmal - Ich würde den SandBoxMode nicht deaktivieren.


Meine Empfehlung wäre, die Funktion Envirion in eine Public Function zu verlagern und diese dann als DefaultValue eines Steuerelementes zu setzen welches als DataSource dein Tabellenfeld enthält.

Frage:
Wie speicherst du denn bisher deine Datensätze?


Gruß
mac_k
Isok
Einsteiger


Verfasst am:
04. Sep 2013, 14:09
Rufname:

AW: DefaultValue zuweisen - AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Hi mac_k,

danke für dein Feedback.
Interessanter Ansatz, aber ich möchte versuchen es umzusetzen ohne den SandBoxMode zu deaktivieren.

mac_k - 04. Sep 2013, 10:07 hat folgendes geschrieben:
Meine Empfehlung wäre, die Funktion Envirion in eine Public Function zu verlagern und diese dann als DefaultValue eines Steuerelementes zu setzen welches als DataSource dein Tabellenfeld enthält.

Das habe ich vor. Aber es klappt leider nicht (siehe mein erster Post).

Zitat:
Frage:
Wie speicherst du denn bisher deine Datensätze?

Ich verstehe nicht richtig was du meinst.
Die Datensätze bei denen ich den Benutzer dranspielen möchte werden aus Excel importiert.
Code:
Private Sub cmdImport_Click()

    Dim strOrdner As String

    With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = "\\L:\Projekte\"
        .Title = "Dateiauswahl"
        .ButtonName = "Auswahl..."
        .InitialView = msoFileDialogViewList
        .Filters.Add "Financial Sheet", "*.xls, *.xlsm, *.xlsx, *.xlsm", 1
        If .Show = -1 Then
            strOrdner = .SelectedItems(1)
        End If
    End With
    If strOrdner = "" Then
    MsgBox ("Keine Datei ausgewählt!")
    Else
        DoCmd.TransferSpreadsheet acImport, 8, _
        "tblMOB", strOrdner, True, "DatabaseFinancials"
        MsgBox "Der Import wurde abgeschlossen."
    End If
 
End Sub

In einem Formular werden die Daten aber bisher noch nicht verwendet.
mac_k
Im Profil kannst Du frei den Rang ändern


Verfasst am:
05. Sep 2013, 06:59
Rufname:

AW: DefaultValue zuweisen - AW: DefaultValue zuweisen

Nach oben
       Version: Office 2010

Hi,

ich sehe in deinem Code keine Stelle an der du versuchst einem Steuerelement die Environ-Funktion als Standardwert zu definieren.

Mit der Zeile fld.DefaultValue = Umgebung$("USERNAME") 'Zuweisung zum Standardwert versuchst du dem Tabellenfeld den Standardwert "Environ" zuzuweisen. Dies geht werder über die Oberfläche noch per VBA (außer man deaktiviert den SandBox-Mode)

Ein Steuerlement ist z.B. ein Textfeld in einem Formular.
Da du dies bei deinem Import nicht hast könntest du dein Problem wie folgt lösen:

Code:

...

'Importieren
DoCmd.TransferSpreadsheet acImport, 8, "tblMOB", "File", True, "DatabaseFinancials"

' Importuser setzen - evtl noch den WHERE-Bereich anpassen
CurrentDb.Execute "UPDATE tblMOB SET User='" & Environ("username") & "' WHERE User='' or User is Null", dbFailOnError
...



Eine andere Möglichkeit wäre den Import nicht über die docmd.spreadsheet Methode durchzuführen sondern direkt per SQL und hier gleich beim Import das Feld User zu füllen...

(Hier ein Beispiel für die SQL-Variante)
Code:

...
   sSQL = "INSERT INTO [tblMBO](TabellenFeld, User) " & _
          "SELECT SheetSpalte, '" & Environ("username") & "' " & _
          "FROM [Tabelle1$A:Z] IN 'C:\Beispiel_Import.xlsx' [Excel 12.0; HDR=Yes; IMEX=1]"

   CurrentDb.Execute sSQL, dbFailOnError
...

Der Nachteil dieser Variante ist, du müsstest alle zu importierenden Tabellenfelder und Excel-Spalten (Wenn diese eine Überschrift haben, den Überschriftsnamen und HDR=Yes; Wenn nicht dann F1,F2,F3 etc.. und HDR=No) angeben.

Bei Fragen stehe ich gerne zur Verfügung ;)

Gruß
mac_k
Isok
Einsteiger


Verfasst am:
05. Sep 2013, 15:14
Rufname:


DefaultValue zuweisen - DefaultValue zuweisen

Nach oben
       Version: Office 2010

mac_k - 05. Sep 2013, 06:59 hat folgendes geschrieben:
...Da du dies bei deinem Import nicht hast könntest du dein Problem wie folgt lösen:

Code:

...

'Importieren
DoCmd.TransferSpreadsheet acImport, 8, "tblMOB", "File", True, "DatabaseFinancials"

' Importuser setzen - evtl noch den WHERE-Bereich anpassen
CurrentDb.Execute "UPDATE tblMOB SET User='" & Environ("username") & "' WHERE User='' or User is Null", dbFailOnError
...



...Bei Fragen stehe ich gerne zur Verfügung ;)

Gruß
mac_k


Hi mac_k,

excellent, das funktioniert perfekt. Vielen Dank. Very Happy

Gruß
Isok
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: Neu erstellter Spalte Datentyp Währung zuweisen 6 Marx 309 24. Sep 2012, 11:51
Marx Neu erstellter Spalte Datentyp Währung zuweisen
Keine neuen Beiträge Access Tabellen & Abfragen: Einem Ausdruck einen Wert zuweisen 2 base1ne 404 03. Aug 2010, 15:10
base1ne Einem Ausdruck einen Wert zuweisen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage: Wert aus Feld auslesen und dadurch Spalte zuweisen 2 Uwe aus HL 1310 16. Jul 2010, 13:55
Uwe aus HL Abfrage: Wert aus Feld auslesen und dadurch Spalte zuweisen
Keine neuen Beiträge Access Tabellen & Abfragen: Lizenzdatenbank / Primärschlüssel mehrere Werte zuweisen 3 NeophyteSL 2441 13. März 2009, 18:44
KlausMz Lizenzdatenbank / Primärschlüssel mehrere Werte zuweisen
Keine neuen Beiträge Access Formulare: Bezeichnungsfeld Wert eines konkreten Abfragefeldes zuweisen 1 Jenzen 1334 20. Feb 2009, 12:38
Jenzen Bezeichnungsfeld Wert eines konkreten Abfragefeldes zuweisen
Keine neuen Beiträge Access Formulare: [Endlosformular] Der Zeile zum Einfügen einen Wert zuweisen 1 Robert.M 700 09. Aug 2008, 23:09
maike kaluscha [Endlosformular]  Der Zeile zum Einfügen einen Wert zuweisen
Keine neuen Beiträge Access Tabellen & Abfragen: Position Punkte zuweisen 1 Helpme123548 404 16. Jun 2008, 19:15
Helpme123548 Position Punkte zuweisen
Keine neuen Beiträge Access Formulare: Pfad an ungebundenes OLE zuweisen 0 mausi181987 398 28. Mai 2008, 16:11
mausi181987 Pfad an ungebundenes OLE zuweisen
Keine neuen Beiträge Access Tabellen & Abfragen: datensatz zuweisen 5 mathias123 390 21. Mai 2008, 15:44
mathias123 datensatz zuweisen
Keine neuen Beiträge Access Formulare: Ungebundenem Kontrollkästchen Wert zuweisen 3 DepriAccessUser 3877 01. Apr 2008, 17:09
Willi Wipp Ungebundenem Kontrollkästchen Wert zuweisen
Keine neuen Beiträge Access Formulare: Rückgabewert einer Abfrage einem Textfeld zuweisen 2 Karline 998 12. Nov 2007, 22:05
Karline Rückgabewert einer Abfrage einem Textfeld zuweisen
Keine neuen Beiträge Access Formulare: Kontrollkästchen einen Wert zuweisen 1 Jörg11 1617 29. Jun 2007, 10:47
JörgG Kontrollkästchen einen Wert zuweisen
 

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