Kennt sich jemand mit VBA und Access aus?

Alles was sonst nicht passt. Bitte keine Werbung für Webseiten/Produkte usw.
Antworten
Benutzeravatar
Maria-Christine
Moderator
Beiträge: 1167
Registriert: 21 Jun 2005, 16:59
Wohnort: Herne

Kennt sich jemand mit VBA und Access aus?

Beitrag von Maria-Christine »

TV-B ist ja auch eine Datenbank und da, denke ich, finde ich vllt. hier jemanden der mir weiter helfen kann

Unter Access habe ich ein Listenfeld erstellt welches mir Suchergebnisse von einem CRM Server anzeigen soll,
das klappt natürlich prima, nur passiert nichts wenn ich auf einen gefundenen Datensatz klicke

Das Problem liegt an dem Format des Feldes zur Identifikation, es ist eine Zahl im Replikations-ID Format
und da kann Access nicht direkt mit umgehen/suchen
Es gibt zwar eine Funktion (StringFromGUID) mit dem man diese Zahl in einen String umwandeln kann
leider macht VBA das aber nicht für einen SQL-Server verständlich

Der Server erwartet für die eindeutige Identifizierung des Datensatzes so was: {a34fe40...usw} (ist eine 16 byte Zahl in hex)
Die Access Funktion macht leider nur die Umwandlung mit einem Vorsatz: {GUID{a34fe40...usw}}

Jetzt bastel ich schon lange daran rum nur den Wert ohne den Vorsatz in der Access Suche zu übergeben
der Code in VBA sieht zZ so aus.

Code: Alles auswählen

Private Sub Liste21_AfterUpdate()
    ' Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
    Dim rs As Object

    Set rs = Me.Recordset.Clone
   
           rs.FindFirst "StringFromGUID([ActivityID]) = '" & _
           StringFromGUID(Me![Liste21]) & "'"

      If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
ActivityID ist die GUID, Liste21 das Listenfeld wo die Suchergebnisse aufgelistet werden

eigentlich bräuchte man ja nur den String so filtern das vorne '{GUID' und hinten '}' bei Übergabe verschwinden
nur weis ich nicht wie das gehen kann.....
TV-B 3.0alpha2, Java (build 1.6.0_18-b07), Windows 7 pro 32bit
Benutzeravatar
Agrivaine
Moderator
Beiträge: 810
Registriert: 21 Nov 2007, 14:39
Kontaktdaten:

Re: Kennt sich jemand mit VBA und Access aus?

Beitrag von Agrivaine »

Hi,
schön das sich Programmiersprachen doch ähneln :)
Schau dir mal "Mid" an: http://www.techonthenet.com/access/func ... ng/mid.php
Gestern standen wir vor dem Abgrund; heute sind wir bereits einen Schritt weiter...
Benutzeravatar
Maria-Christine
Moderator
Beiträge: 1167
Registriert: 21 Jun 2005, 16:59
Wohnort: Herne

Re: Kennt sich jemand mit VBA und Access aus?

Beitrag von Maria-Christine »

ah ja, dann müsste es so aussehen?

Code: Alles auswählen

rs.FindFirst "StringFromGUID([ActivityID]) = '" & _
           StringFromGUID(Mid"(Me![Liste21]),5) & "'"
...nachher mal ausprobieren

edit

nö, so geht das nicht (Haarerauf) :?
TV-B 3.0alpha2, Java (build 1.6.0_18-b07), Windows 7 pro 32bit
Benutzeravatar
bodo
Site Admin
Beiträge: 19635
Registriert: 03 Dez 2003, 19:37
Wohnort: Köln
Kontaktdaten:

Re: Kennt sich jemand mit VBA und Access aus?

Beitrag von bodo »

Niemals rückgabewerte einer String-Funktion so umbauen, bis es passt. Das is gefährlich. Lieber die Doku lesen:


http://msdn.microsoft.com/en-us/library ... 11%29.aspx

GUID => String : StringFromGUID
String => GUID : GUIDFromString

Beispiel aus der Doku:

Code: Alles auswählen

Sub CheckGUIDType()

    Dim dbsConn As ADODB.Connection
    Dim rstEmployees As ADODB.Recordset

    ' Make a connection to the current database.
    Set dbsConn = Application.CurrentProject.Connection
    Set rstEmployees = New ADODB.Recordset
    rstEmployees.Open "Employees", dbsConn, , , adCmdTable

    ' Print the GUID to the immediate window.
    Debug.Print rst!s_GUID
    Debug.Print TypeName(rst!s_GUID)
    Debug.Print TypeName(GuidFromString(rst!s_GUID))

    Set rstEmployees = Nothing
    Set dbsConn = Nothing

End Sub
BTW: Ich kann kein Access/VBA. Das ist das letzte Tool, in dem ich was schreiben würde. Dreckszeug und sau gefährlich, da das Daten kaputt macht.
Antworten