Werte aus Eingabefeld in einer Excel-Datei vergleichen die als DB gebutzt wird.

  • VBScript

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von PSJ.

    Werte aus Eingabefeld in einer Excel-Datei vergleichen die als DB gebutzt wird.

    Hallo zusammen,

    ich bitte gleich mal um entschuldigung wenn ich hier ein bereits existierendes oder an diser Stelle falsches Thema geöffnet habe.

    Ich bin am Ende meiner Nerven und Geduld.

    Folgendes Problem habe ich:
    ich habe eine Excel-Datei die als DB genutzt wird. Da gibt es zwei Spalten A und B. Jetzt habe ich noch ein Formular oder ein Eingabefenster mit zwei Eingabefelder.

    In das Eingabefeld1 wird eine Zahl eingegeben, z.B. 1259920340
    In das Eingabefeld2 wird eine andere zahl eingegeben z.B. 0430299521

    Diese Zahlen stehen aber in der Exceltabelle in einer Zeile. => Zahl1 in Spalte A und die Zahl2 in Spalte B

    Nun soll das Script abfragen ob die beiden eingegebenen Zahlen aus den beiden Eingabefelder auch wirklich in der Tabelle in einer Zeile stehen. sollte das nicht der Fall sein. muss eine meldung erscheinen die sagt: bitte erneut eingeben oder so...

    Topic verschoben, wir haben auch ein VBS-Forum!
    Bilder
    • eingabe.JPG

      16,6 kB, 585×183, 131 mal angesehen
    • Tabelle.JPG

      27,75 kB, 365×239, 112 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Du kannst einfach den Text der Excel Tabelle einlesen.
    Wenn du ihn Zeile für Zeile durch gehst bräuchtest du nur nach ";" in ein Array zu splitten und hättest deine Werte. (";" Ist das Zeichen womit Excel seine Spalten voneinander Trennt)
    Wenn nicht eben eine Schleife die jede Zeile des Gesamten eingelesenen Textes durchgeht und Splittet.
    Habe bei dieser Methode die Performance einmal ganz hinten angestellt. Bei mehreren Tausend Werten in der Datei kann es gut dazu führen dass sie etwas an Zeit in anspruch nimmt da sie den Text Zeile für Zeile durchgeht und nicht komplett einliest.
    Außerdem ist diese Methode nur mit windows CSV Dateien machbar.

    Nun denn ein Lösungsvorschlag wäre jedoch das hier:

    Visual Basic-Quellcode

    1. Private Sub Check()
    2. Dim ReadLine As String
    3. Dim LineValues() As String ' Index 0 = ID 1 = Auftragsnummer 2 = Einlege Nummer
    4. Open "C:\Test2.csv" For Input As #1
    5. Do While Not EOF(1)
    6. Line Input #1, ReadLine
    7. LineValues = Split(ReadLine, ";")
    8. If LineValues(1) = Scan1.Text And LineValues(2) = Scan2.Text Then
    9. 'Dein Befehl
    10. End If
    11. Loop
    12. Close #1
    13. End Sub


    //EDIT

    Bei Ausdrücklichen Wunsche schaue ich mir auch noch andere Lösungen an. Jedoch war das hier mehr als Denkanstoß für dich gedacht. Falls du noch einen anderen Weg haben möchtest Excel Dateien einzulesen die nichti m .CSV Format sind kann ich dir nur Raten Google zu nutzen oder gleich diesen Link zu folgen Click
    @PSJ,

    mega cool vielen Dank mal dafür.
    Was google angeht das habe ich im Vorfeld schon gemacht. Das Forum ist immer meine letzte Option.
    Jetzt muss ich leider noch den Code in VBS umschreiben.
    Da ich bein erstellen des Themas keine VBScript auswahl hatte musste ich VB6 auswählen. hehe
    Nächstesmal einfach im Titel dazu schreiben falls es dir Wichtig ist nur in VBS Antworten zu bekommen dann.
    Gibt auch die Möglichkeit das du per Binary den ganzen Text ausliest. Hättest einen Perfomance Gewinn jedoch musste dann wiederum die Einzelnen Zeilen voneinander Trennen.

    Gibt unzählige Methoden die auch um längen besser sein werden als die von mir genannte. Jedoch ist sie relativ leicht verständlich falls man mal garkeinen Plan hat.
    so wie ich gerade....
    Mein Hirn ist Matsch...
    ich hätte gleich dazu schreiben sollen das die Lösung in VBScript sein sollte.
    Performance ist hier nicht wichtig.

    Wichtig ist bloß die Abfrage ob die beiden eingescannten Zahlen auch in der DB in einer Zeile sind. sonst hätte ich einfach den Eingabewert mit der Spalte verglichen aber dann wäre die Zahl in Spalte A zeile 2 und in Spalte B Zeile 3 und die Abfrage hätte funktioniert. wäre aber vom sinn her falsch.