Ergebnis 1 bis 15 von 54

Thema: Übergabe an Access

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registriert seit
    17.11.2005
    Beiträge
    23
    Also so funktioniert es:

    Private Sub Form_Load()
    Dim ServerIP As String
    ServerIP = "localhost"
    Winsock1.Connect ServerIP, 9300
    End Sub

    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim Eingangstext As String
    Winsock1.GetData Eingangstext 'Die Variable "Eingangstext" enthält jetzt das Telegramm

    Dim Eingang() As String
    Eingang() = Split(Eingangstext, Chr$(9))
    'Die Variablen "Eingang(0)", "Eingang(1), "Eingang (...)" enthalten jetzt die einzelnen Felder

    MsgBox Eingang(0)

    End Sub


    Ich bekomme z.B. bei einem Status ein Fenster geöfnet mit dem Inhalt "FMSTlg"

    --------------------------------------------------------------------------------------
    So funktioniert es nicht:
    Private Sub Form_Load()
    Dim ServerIP As String
    ServerIP = "localhost"
    Winsock1.Connect ServerIP, 9300
    End Sub

    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim Eingangstext As String
    Winsock1.GetData Eingangstext 'Die Variable "Eingangstext" enthält jetzt das Telegramm

    Dim Eingang() As String
    Eingang() = Split(Eingangstext, Chr$(9))
    'Die Variablen "Eingang(0)", "Eingang(1), "Eingang (...)" enthalten jetzt die einzelnen Felder

    MsgBox Eingang(1)

    End Sub


    Also mit "Eingang(1) bekomme ich schon eine Fehlermeldung wenn ich das "Programm" starte.

    Eigentlich könnte es doch nur ein Fehler beim Spliten sein oder???
    Bin was sowas angeht auch nicht so der Experte... bin halt nur son bischen am üben.
    Mein Ziel ist es ein kleines Programm zu schreiben das mir die Alarmierungen(5-Ton), Status und die FMS Leitstellentexte in eine MySql Datenbank schreibt.
    Also im prinzip fast so etwas wie das Programm das man hier in diesem Thread schon runterladen kann.

    Mfg

  2. #2
    inselhopper Gast
    Hmm. Warum nimmst du denn das Prog nicht was es hier im Thema als Download gibt? Es funktioniert! Nur halt noch nicht mit 5 Ton Alarmierung (kommt sicher noch)

    Aber trotz alledem müsste es klappen. Ein Fehler im Split ist es nicht, da ich genau so das Telegramm aufschlüssel.

    Was zeigt der denn an wenn der Debugger läuft und du mit dem Cursor über Eingang(1) gehst?

  3. #3
    Registriert seit
    16.03.2002
    Beiträge
    110
    Hallo,

    Du hast geschrieben, dass Du Winsock über "Projekt>>Komponenten eingefügt hast.
    Das läst vermuten, dass Du nicht mit Access sondern mit VB 6 arbeitest.

    Dann musst Du bei

    Eingang() = Split(Eingangstext, Chr$(9))

    das Klammerpaar hinter Eingang weglassen, also

    Eingang = Split(Eingangstext, Chr$(9))

    Bei

    Dim Eingang() As String

    muss es aber stehen bleiben!

    Gruss Ralf

  4. #4
    Registriert seit
    17.11.2005
    Beiträge
    23
    Hallo,

    Ja ich benutze VisualBasic 6.
    Leider funktioniert es auch nicht wenn ich das Klammernpaar wegnehme.

    Es könnte eig auch wie gesagt nur daran liegen also beim Spliten muss da irgendwas schief gehen...

    Wenn ich z.B die Variable "Eingangstext" ausgebe, bekomme ich ja gleich als ersten von FMS32 den Text:

    #Verbindung zu FMS32-Server erfolgreich hergestellt!
    #Verbunden mit Anschluss: 1
    AN1

    Mit der Variable "Eingang(0)" bekomme ich jetzt den Inhalt "#Verbindung", mit der Eingang(1) bekomme ich "zu", usw...

    Wenn jetzt allerdings ein richtiger Status kommt, bekomme ich die Fehlermeldung:
    Laufzeitfehler 9:
    Index liegt außerhalb des gültigen Bereich.

    Woran könnte es noch liegen?

    Gruß Christian

  5. #5
    Registriert seit
    16.03.2002
    Beiträge
    110
    Hallo Christian,

    Eingang = Split(Eingangstext, Chr$(9)) splitted bei jedem Vorkommen des TAB-Zeichens
    CHR$(9).

    In

    #Verbindung zu FMS32-Server erfolgreich hergestellt!
    #Verbunden mit Anschluss: 1
    AN1

    kommt TAB nicht vor, also steht der gesamte Text in Eingang(0). Wenn Du versuchst,
    auf Eingang(1) zuzugreifen, kommt die Meldung "Index außerhalb des gültigen Bereichs",
    weil Eingang (1) ja gar nicht angelegt wurde.

    ------
    Mit der Variable "Eingang(0)" bekomme ich jetzt den Inhalt "#Verbindung", mit der Eingang(1) bekomme ich "zu", usw...
    ------

    Das kann eigentlich nicht angehen, es sei den, Du hast Chr$(9) in CHR$(32) geändert.

    Dann funktionieren aber die richtigen Meldungen nicht mehr.

    Lösung:

    Chr$(9) muss bleiben.

    Nach

    Eingangstext=...............

    folgendes einfügen:

    If Left(Eingangstext, 1) = "#" Then
    Exit Sub
    End If

    Damit wird die Server-Meldung übersprungen und es geht mit der
    ersten richtigen Meldung los.

    Nun sollte es klappen.

    Gru? Ralf

  6. #6
    Jules Gast
    Hallo! Ich arbeite (schon länger) mit folgendem Code (etwas abgeändert) in VB6...erfolgreich. Einfach mal kopieren und schauen ob`s klappt ;)

    :

    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    On Error Resume Next
    Dim strData As String
    Winsock1.GetData strData
    FMSEingang strData
    End Sub

    Public Sub FMSEingang(ByVal strData As String)

    Dim strMultiString() As String
    Dim strSimple() As String
    Dim I As Integer

    If strData <> "" Then
    strMultiString = Split(strData, Chr$(13) & Chr$(10)) 'Warum? Falls 2 Telegramme auf einmal gesendet werden, wird keins "verschluckt"!

    For I = 0 To UBound(strMultiString)

    If strMultiString(I) <> "" Then
    strSimple = Split(strMultiString(I), Chr$(9))

    Select Case strSimple(0)
    Case "FMSTlg"
    MsgBox strSimple(1) & "_" & strSimple(6) & "_" & strSimple(8) 'Hier würde FMS-Kennung_Status_Richtung stehen!
    Case "POC"
    MsgBox strSimple(1) 'Hier würde der RIC stehen!
    Case "ZVEI"
    MsgBox strSimple(1) 'Hier würde die 5-Tonfolge stehen
    End Select

    End If

    Next I

    End If
    End Sub

  7. #7
    Registriert seit
    17.11.2005
    Beiträge
    23
    @Ralf

    richtig ich bin ein bischen durcheinander gekommen...
    aber so funktioniert es jetzt, vielen Dank.

    Gruß Christian

  8. #8
    Registriert seit
    27.07.2007
    Beiträge
    225
    Hallo,

    kann es mal bitte jemand online stellen?
    ich würde es auch gerne mal testen.

    mfg

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •