Neuigkeiten:

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

Mobiles Hauptmenü

Neueste Beiträge

#91
Access Programmierung / Re: Application.FollowHyperlin...
Letzter Beitrag von Bitsqueezer - August 29, 2024, 17:02:45
Hallo,

am besten läßt Du Dir "ParzPfadNr" mal im Direktfenster ausgeben und schaust, ob hier z.B. der Gesamtpfad zu lang ist oder für Windows nicht erlaubte Zeichen vorkommen oder sonst ein Fehler im Gesamtstring enthalten ist.

Gruß

Christian
#92
Access Programmierung / Re: Application.FollowHyperlin...
Letzter Beitrag von Moarli - August 29, 2024, 16:22:30
@Bitsqueezer: Leider nein  :(  Es kommt der Laufzeitfehler 490: "Die angegebene Datei konnte nicht geöffnet werden" und der Debugger springt zu "Application.FollowHyperlink ParzPfadNr"
#93
Tabelle/Abfrage / Re: Ergebnis aus Funktionsaufr...
Letzter Beitrag von DieterEsser - August 29, 2024, 12:49:38
Hallo,
erst einmal herzlichen Dank an Euch beide.
Ich werde es heute Abend mal testen.

Gruß
Dieter
#94
Access Programmierung / Re: Application.FollowHyperlin...
Letzter Beitrag von Bitsqueezer - August 29, 2024, 12:14:49
Hallo,

entferne mal "CHR(34)" davor und danach. Dann sollte es auch gehen.

Gruß

Christian
#95
Access Programmierung / Re: Application.FollowHyperlin...
Letzter Beitrag von Moarli - August 29, 2024, 12:11:15
Das war schon mal nicht schlecht!  :)
Nur - ich will keine bestimmte Datei öffnen sondern "nur" diesen Ordner! :-\
#96
Access Programmierung / Re: Application.FollowHyperlin...
Letzter Beitrag von Debus - August 29, 2024, 10:41:55
Hey, vielleicht mal so:


   Sub ÖffneExeDatei()
    Dim dbPfad As String
    Dim exeDatei As String
    Dim vollstaendigerPfad As String

 
    dbPfad = CurrentProject.Path

   
    exeDatei = "123test.exe"

   
    vollstaendigerPfad = dbPfad & "\" & exeDatei

   
    If Dir(vollstaendigerPfad) <> "" Then
       
        Shell vollstaendigerPfad, vbNormalFocus
    Else
        MsgBox "Die Datei '" & exeDatei & "' wurde im Verzeichnis '" & dbPfad & "' nicht gefunden.", vbExclamation
    End If
End Sub


Gruß
Holger
#97
Access Programmierung / Application.FollowHyperlink fu...
Letzter Beitrag von Moarli - August 29, 2024, 10:20:42
Hallo!
Ich habe auf meinem PC Betriebssystem W11 und MS Office Professional 2019.
In einer Datenbank für den KGV möchte ich aus einem Formular den Dateiexplorer aufrufen und dabei direkt den Ordner mit den dazugehörigen Unterlagen (Bilder, Pachtverträge, etc.) der im Formular aktuellen Parzelle öffnen. Das funktioniert mit dem unten angeführten VBA-Script leider nicht. Da die Datenbank auf unterschiedlichen Geräten mit unterschiedlichen Laufwerken liegt / verwendet wird, möchte ich immer vorher den aktuellen Speicherpfad mit Application.CurrentProject.Path ermitteln.
Kann mir jemand sagen was hier nicht richtig ist?
Vielen Dank!

Private Sub Befehl35_Click()

Dim ParzPfadNr As String

    ParzPfadNr = Chr(34) & Application.CurrentProject.Path & "\" & ParzNr & Chr(34)
    'MsgBox "Die Datenbank befindet sich im Verzeichniss " & Application.CurrentProject.Path &
    '" und die aktuelle ParzNr. ist : " & ParzNr
   
    Application.FollowHyperlink "F:\Daten\KGV\Parzellen\" & ParzNr, , False 'funktioniert
    Application.FollowHyperlink ParzPfadNr                                  'funktioniert nicht
   
End Sub
#98
Tabelle/Abfrage / Re: Ergebnis aus Funktionsaufr...
Letzter Beitrag von Bitsqueezer - August 29, 2024, 10:14:51
Hallo,

am besten in SQL zeigen, so wie Klaus es geschrieben hat, ist es OK.

Das mit der gleichen Nummer liegt daran, daß der Optimizer die Funktion nur einmal aufruft, wenn keine Parameter übergeben werden, die sich auf den aktuellen Datensatz beziehen. Auf diese Weise optimiert er die Abfrage, weil er es so nur einmal für alle Datensätze aufrufen muß.

Als Abhilfe übergibst Du einfach ein beliebiges Feld aus der Quelltabelle als Parameter (den Du der Funktion hinzufügen mußt, z.B. "varDummy As Variant") und änderst in der Abfrage z.B. "GetUID([MeinPKFeld])". Dann solltest Du für jede Zeile eine eigene GUID erhalten.

Für eine INSERT-Abfrage, die feste Werte verwendet, also nicht INSERT...SELECT (was mehrere Datensätze einfügen kann), sondern INSERT..VALUES benötigst Du das nicht, weil Du dann ja nur eine Zeile einfügen kannst (in SQL Server geht VALUES auch mit mehreren Zeilen, in Access SQL nicht).

Bei INSERT...SELECT ist im Designer der Quellwert natürlich aus einer Quelltabelle, daher unter "Feld" dann schon richtig und auch der automatische Alias.

Gruß

Christian
#99
Tabelle/Abfrage / Re: Ergebnis aus Funktionsaufr...
Letzter Beitrag von MzKlMu - August 28, 2024, 23:59:14
Hallo,
@ Christian
ZitatWenn Du als Feld "Ausdr1: GetUID()" verwendest, dann ist GetUID() der Name Deines Feldes und "Ausdr1" der Alias zu dem Feldnamen.
Das kann ich nicht verstehen. Das ist doch für eine Anfügeabfrage richtig und funktioniert problemlos.

Ich habe das getestet in SQL sieht das so aus:

INSERT INTO Daten ( Textfeld )
SELECT fncTest() AS Ausdr1

Fügt den Rückgabewert der Funktion als neuen Datensatz an.

Siehe Bild.
#100
Tabelle/Abfrage / Re: Ergebnis aus Funktionsaufr...
Letzter Beitrag von DieterEsser - August 28, 2024, 20:36:27
Hallo
erst einmal Danke.

Wenn ich aber die Funktion eingebe
Sie dürfen in diesem Board keine Dateianhänge sehen.
und die Zeile verlasse, dann setzt er sofort den Text "AUSDR1" davor
Sie dürfen in diesem Board keine Dateianhänge sehen. 

Ich habe dann die Anweisung mal in eine Auswahlabfrage eingegeben. Zusätzlich habe ich versucht eine fortlaufende Nummer zu erzeugen. Hier funktioniert es, aber es steht in jeder Zeile die gleiche GUID und die gleiche Nummer.
Sie dürfen in diesem Board keine Dateianhänge sehen.

Sie dürfen in diesem Board keine Dateianhänge sehen.   

Hier mal der Code der Funktion:
Option Explicit
Option Compare Database

 Public Declare PtrSafe Function C_API_CoCreateGuid Lib "ole32" Alias "CoCreateGuid" (ID As Any) As Long

Public Function CAL_GetUID() As String
Dim bArr(0 To 15)     As Byte
Dim i                 As Long
Dim sTemp             As String
Dim sChar             As String
Dim sUID              As String

On Error Resume Next

Const S_OK As Long = 0
   
  If C_API_CoCreateGuid(bArr(0)) = S_OK Then
    For i = 0 To 15
      sUID = sUID & IIf(bArr(i) < 16, "0", "") + Hex$(bArr(i))
    Next i
    For i = 1 To Len(sUID)
      sChar = Mid(sUID, i, 1)
      sTemp = sTemp & Asc(sChar)
    Next
    CAL_GetUID = sTemp
  End If
   
End Function