Hallo; Das einbinden der fremd dll per VBA in Access 2010 funktioniert einwandfrei. Wie kann man den BSTR-String in einen auswertbaren String umwandeln ? Ich habe schon einige Ansätze probiert, aber ohne Erfolg.
Hallo; Das einbinden der fremd dll per VBA in Access 2010
funktioniert einwandfrei.
welche?
Wie kann man den BSTR-String
was ist BSTR?
in einen auswertbaren String umwandeln ?
das steht in der Beschreibung der DLL
Ich habe schon einige Ansätze probiert, aber ohne Erfolg.
welche?
Grüße aus Rostock
Wolfgang
(Netwolf)
Danke für die schnelle Antwort Netwolf, kann leider erst heute antworten.Die dll nennt sich „Exchange.dll“ aus dem Programm Caliper2PC. Ich benötige 5 Werte die ich nach Tasten druck (Befehl21_Click()) nacheinander von Exchange.dll abfrage.
Wenn der Messschieber (GetChannel1) nicht angeschlossen bzw. nicht initalisiert kommte die Meldung „No Server“. Aber beim nächsten Tastendruck erscheinen nur noch Zahlen, obwohl die selbe Meldung erscheinen sollte. Daher gehe ich davon aus, das es Problem mit dem übergeben Wert ist. Ich hoffe ich konnte das Problem erklären.
Hier ist mein VBA:
Option Compare Database
Option Explicit
Private Declare Function GetChannel1 Lib „Exchange.dll“ () As String
Dim zaehlen As Integer
Private Sub Befehl21_Click()
zaehlen = zaehlen + 1
If zaehlen = 1 Then
Me.Gehäuse_0_Grad.Value = GetChannel1
ElseIf zaehlen = 2 Then
Me.Gehäuse_90_Grad.Value = GetChannel1
ElseIf zaehlen = 3 Then
Me.Bremse_0_Grad.Value = GetChannel1
ElseIf zaehlen = 4 Then
Me.Bremse_45_Grad.Value = GetChannel1
ElseIf zaehlen = 5 Then
Me.Bremse_90_Grad.Value = GetChannel1
Else
zaehlen = 0
End If
End Sub
Danke im voraus
N’abend,
Wenn der Messschieber (GetChannel1) nicht angeschlossen bzw.
nicht initalisiert kommte die Meldung „No Server“.
wo? wie?
Aber beim
nächsten Tastendruck erscheinen nur noch Zahlen, obwohl die
selbe Meldung erscheinen sollte.
vielleicht wurde er automatisch initalisiert?
Daher gehe ich davon aus, das es Problem mit dem übergeben Wert ist.
du meinst den Wert den du von der Funktion GetChannel1 bekommst?
Ich hoffe ich konnte das Problem erklären.
hmm, ich versuche dir zu folgen…
Hier ist mein VBA:
Option Compare Database
Option Explicit
Private Declare Function GetChannel1 Lib "Exchange.dll" () As String
Dim zaehlen As Integer
'wo wird zaehlen global definiert und mit 0 vorbelegt?
Private Sub Befehl21\_Click()
Dim Dummy
Dummy = GetChannel1 'Informationen holen
'hier prüfen was bei GetChannel1 raus kommt
if Dummy = "No Server" then
'Initialisierung durchführen
zaehlen = 0 'Zähler zurücksetzen
exit sub 'und raus hier
end if
zaehlen = zaehlen + 1
'ich würde select case verwenden:
select case zaehlen
case 1
Me.Gehäuse\_0\_Grad = Dummy'.Value ist überflüssig
case 2
Me.Gehäuse\_90\_Grad = Dummy'.Value ist überflüssig
case 3
Me.Bremse\_0\_Grad = Dummy'.Value ist überflüssig
case 4
Me.Bremse\_45\_Grad = Dummy'.Value ist überflüssig
case 5
Me.Bremse\_90\_Grad = Dummy'.Value ist überflüssig
'Hier zaehlen auf 0 setzen!!
zaehlen = 0
case else
msgbox "Fehler beim Zählen: " & zaehlen
'Hier zaehlen wieder auf 0 setzen!!
zaehlen = 0
end select
End Sub
Grüße aus Rostock
Wolfgang
(Netwolf)