Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

DomWert...

Begonnen von gcniva, Februar 09, 2019, 14:42:57

⏪ vorheriges - nächstes ⏩

gcniva

Hallo

Ja ich weis  ist schon tausend mal gefragt worden, komme aber mit keiner Antwort weiter...

Mein Problem:
Ich habe ein Formular mit dem Namen frmPlan
In diesem wird per VBA ein Klalender erzeugt.
Das Datum steht dann in einem Bezeichnungsfeld "cptItem5" (kein Textfeld)

Jetzt möchte ich aus einer Tabelle (tbl_Kalender) die nicht mit dem Formular (frmPlan) verknüpft ist, einen ZahlenWert holen...

Im Steuerelementinhalt der Bezeichnungsfeld (cptSchi5) steht dieses...

=DomWert("[C_Schicht]";"tbl_Kalender";"[Datum]='" & [cptItem5] & "'")

Ergebniss ist "'Fehler"

Wer weiß rat ?

Gruß Gerd
Arbeite mit Access 2010

PhilS

Zitat von: gcniva am Februar 09, 2019, 14:42:57Das Datum steht dann in einem Bezeichnungsfeld "cptItem5" (kein Textfeld)
[...]
Im Steuerelementinhalt der Bezeichnungsfeld (cptSchi5) steht dieses...

=DomWert("[C_Schicht]";"tbl_Kalender";"[Datum]='" & [cptItem5] & "'")

Ergebniss ist "'Fehler"
Im Detail ergibt deine Beschreibung keinen Sinn. - Ein Bezeichnungsfeld hat keine Eigenschaft Steuerelementinhalt! Der Anzeigetext eines Bezeichnungsfeldes wird über die Eigenschaft Caption (Beschriftung?) festgelegt. In dieser Eigenschaft sind aber keine Ausdrücke möglich.
Außerdem kann ein Bezeichnungsfeld nicht in einem Ausdruck referenziert werden.

1.) Du musst cptItem5 zu einem Textfeld machen. Das kannst du ja in seinen Eigenschaften so einstellen, dass es optisch nicht von einem Bezeichnungsfeld zu unterscheiden ist.
2.) Wenn du Datumswerte als Kriteren in SQL-Abfragen einbaust, müssen diese in # eingeschlossen werden und im US- oder ISO-Format sein.
Es sollte in diesem Fall auch funktionieren, wenn du direkt das Steuerlement in dem Kriterium referenzierst. Dann sollte der Jet-Expression-Service selbst mit der übergabe des Datumwertes zurechkommen.
=DomWert("[C_Schicht]";"tbl_Kalender";"[Datum]=[cptItem5]")
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

DF6GL

Hallo,

abgesehen von der Sinnlosigkeit, ein (variables) Datum in einem Bezeichnungsfeld darzustellen, wäre ein solcher Steuerelementinhalt denkbar:


=DomWert("[C_Schicht]";"tbl_Kalender";"[Datum]=" & Format([Bezeichnungsfeld1].[Caption];"\#jjjj-mm-tt\#"))

Wobei das Tabellenfeld "Datum" (ungünstiger Name!)  den Datentyp Datum/Uhrzeit aufweisen muss.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

gcniva

Hi

Sorry cptSchi5 ist ein Textfeld...

@DF6GL
Danke so geht's...
=DomWert("[C_Schicht]";"tbl_Kalender";"[Datum]=" & Format([Bezeichnungsfeld1].[Caption];"\#jjjj-mm-tt\#"))

Gruß Gerd
Arbeite mit Access 2010

gcniva

Hallo noch mal...

Wegen der Sinnlosigkeit lässt sich doch immer gerne streiten  ;)

Wollte das ganze in VBA lösen, doch wie immer geht das nicht so wie ich es will.
Hier mein Code:

Anzeige nix , Fehlermeldung keine...

Private Sub varX_AfterUpdate()
   
    On Error GoTo myError
   
    'Schichten eintragen
    varX = DomWert("[C]", "abf_Kalender", "[Datum] =" & Format([cptItem2].[Beschriftung], "\#jjjj-mm-tt\#"))


myError:
    Select Case Err.Number
        Case 9999
            'spezifische Fehler behandeln
        Case Else
            MsgBox "Ausnahme Nr. " & Err.Number & ". " & Err.Description
            Resume myExit
End Sub

Gruß Gerd
Arbeite mit Access 2010

gcniva

Hab mal ein Bild angehängt wie das ganze bis jetzt ausschaut...
Arbeite mit Access 2010

DF6GL

Hallo,

und, was genau willst Du machen?

Wenn "cptItem2" ein Textfeld-Steuerelement ist, muss "[Beschreibung]" im Ausdruck weggelassen werden.

Welchen Sinn hat die Prozedur?

Sobald nach einem Eintrag in Feld "varX"  (was ist das für ein Steuerelement und wo befindet es sich im Bild?) das Feld verlassen oder auch Return gedrückt wird, wird diesem Feld  der Wert aus dem Tabellenfeld "C" beim dem Kriterium entspr. Datensatz zugewiesen und der vorherige Eintrag überschrieben.

Irgendwie nicht nachvollziehbar.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

gcniva

Hi Franz

Glaue ich kann das ganze nicht erklären was ich meine.
Deswegen habe ich dir mal das ganze angehängt...

Gruß Gerd

PS. Ich sehe das Bild
Arbeite mit Access 2010

gcniva

Hallo

Kann man den "Ausdruck" dei domWert aus einen Textfeld im Formular ziehen?

DomWert( Ausdruck; Domäne ; [Kriterien] )

=DomWert("[Schi]";"abf_Kalender";"[Datum]=" & Format([cptItem2].[Beschriftung];"\#jjjj-mm-tt\#"))

Gruß Gerd
Arbeite mit Access 2010

DF6GL

Hallo,

vielleicht meinst Du dies:

=DomWert(" & [Schi] & ";"abf_Kalender";"[Datum]=" & Format([cptItem2].[Beschriftung];"\#jjjj-mm-tt\#"))

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

gcniva

Hallo Franz

Vielleicht...

Geht aber nicht kommt #Fehler

Gruß
Arbeite mit Access 2010

gcniva

Noch mal...

=Wenn([Schi]="A";DomWert("[A]";"abf_Kalender";"[Datum]=" & Format([cptItem1].[Beschriftung];"\#jjjj-mm-tt\#"));Wenn([Schi]="B";DomWert("[B]";"abf_Kalender";"[Datum]=" & Format([cptItem1].[Beschriftung];"\#jjjj-mm-tt\#"));Wenn([Schi]="C";DomWert("[C]";"abf_Kalender";"[Datum]=" & Format([cptItem1].[Beschriftung];"\#jjjj-mm-tt\#"));Wenn([Schi]="D";DomWert("[D]";"abf_Kalender";"[Datum]=" & Format([cptItem1].[Beschriftung];"\#jjjj-mm-tt\#"));"X"))))

So gehts...
Arbeite mit Access 2010

ebs17

ZitatSo gehts...
...aber nicht gut und nachhaltig.

Solche Wenn-Dann-Orgien kann man sich regelmäßig ersparen, wenn man auf geeignete Tabellen und Tabellenverknüpfungen zurückgreift. Dann lassen sich zusätzlich auch problemlos Erweiterungen vornehmen, bspw. wenn die Abfrage nicht nur aus A-D gerichtet ist sondern auf K oder Z zu erweitern wäre.
Mit freundlichem Glück Auf!

Eberhard

gcniva

Hi Eberhart

Geb dir recht das wird natürlich schwer..
Wollte das ganze mal als VBA machen aber dann kommt der Fehler 428

Sub schiFill()
    'Trägt die Schichten ein
   
    On Error GoTo myError
   
  If Schi = "A" Then
  Me!cptSchi3 = DLookup("[A]", "abf_Kalender", "[Datum]=" & Format([cptItem3].[Beschriftung], "\#jjjj-mm-tt\#"))
  End If

myExit:
    Exit Sub

myError:
    Select Case Err.Number
        Case 9999
            'spezifische Fehler behandeln
        Case Else
            MsgBox "Ausnahme Nr. " & Err.Number & ". " & Err.Description
            Resume myExit
    End Select
   
         End Sub


Gruß Gerd
Arbeite mit Access 2010

PhilS

Ich weiß nicht, ob es die Ursache für den konkrete Fehler ist, aber VBA kommt mit dem Format jjjj-mm-tt nicht zurecht. Verwende das englische Format yyyy-mm-dd stattdessen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor