Smilla Geschrieben 4. Oktober 2005 Geschrieben 4. Oktober 2005 Brauche schnelle Hilfe: Ich habe folgende Aufgabe, ich soll mit VBScript ein Adresssystem programmieren wo man erst seinen Namen und Adresse eingibt (inputbox). OK das hab ich Dann soll jeweils aber geprüft werden ob auch Daten eingegeben wurden in die Inputbox und desweiteren soll die Textdatei in der die Daten gespeichert werden, durchsucht werden können! Wie mache ich das?!? Zitieren
Amstelchen Geschrieben 4. Oktober 2005 Geschrieben 4. Oktober 2005 vorweg: also ich finde ja, dass VBS für eine adressverwaltung etwas falsch dimensioniert ist. wollt ihr die daten in stinknormalen textdateien verwalten oder nicht doch lieber eine sql-datenbank verwenden? zu 1. du kannst entwdeder mit der funktion Len auf nullstring überprüfen oder aber du vergleichst auf = "". zu 2. verwende eine funktion (klasse wird bei vbs schwierig werden), die sequentielle datendateien verarbeitet. ist dir das zu kompliziert, verwende einen bestehenden datenbanklayer und erfinde nicht das rad neu. s'Amstel Zitieren
Smilla Geschrieben 4. Oktober 2005 Autor Geschrieben 4. Oktober 2005 Also das erste mit dem LEN, das verstehe ich! Das probier ich mal! Aber das zweite mit der Funktion kapiere ich nicht ganz! Über Google hab ich auch nicht wirklich was gefunden! Aber ich such nochmal nach sequentiellen datendateien Zitieren
Klotzkopp Geschrieben 4. Oktober 2005 Geschrieben 4. Oktober 2005 ...ich soll mit VBScript... Dann schieb ich dich mal dahin, wo du hingehörst... Zitieren
Smilla Geschrieben 6. Oktober 2005 Autor Geschrieben 6. Oktober 2005 Dann schieb ich dich mal dahin, wo du hingehörst... Danke! Hab erst nach erstellen des Beitrags das passende Forum entdeckt, da wars schon zu spät! Zitieren
Smilla Geschrieben 31. Oktober 2005 Autor Geschrieben 31. Oktober 2005 Kann mir jemand noch weiterhelfen wegen der Suchfunktion über die Textdatei? Komme damit einfach nicht weiter! Danke! Zitieren
Amstelchen Geschrieben 31. Oktober 2005 Geschrieben 31. Oktober 2005 was hast du denn bis jetzt zusammenbekommen - verwendest du einen wrapper wie FSO oder wie greifst du auf die dateien zu? wie greifst du darauf zu - zeilen- oder zeichenweise oder gar blockweise. ein bisschen mehr infos, um dir weiterhelfen zu können, wären ja nicht ganz uneben. s'Amstel Zitieren
Smilla Geschrieben 31. Oktober 2005 Autor Geschrieben 31. Oktober 2005 mal ein ausschnitt: Ich hab mal versucht die Suchfunktion mit If-Schleifen zu machen... Also die Variable Nachname ist definiert, habs nur hier nichtmehr mit in dem Ausschnitt drin! Da wo ich rot markiert habe, weiß ich nicht was da rein soll :confused: suche = InputBox ("Nach was wollen sie suchen? (Nachname, PLZ oder Ort)" , "Suchfunktion") 'Suche nach Nachname Do If suche = "Nachname" Then [COLOR="Red"]Set write = fso.OpenTextFile (NachnameFile, 8,True) write.WriteLine(Nachname) write.close[/COLOR] End If Loop 'Suche nach PLZ ' Do ' If suche = "PLZ" Then ' WScript.Echo (Plz) ' End If ' Loop ' ' 'Suche nach Ort ' Do ' If suche = "Ort" Then ' WScript.Echo (Ort) ' End If ' Loop Zitieren
Amstelchen Geschrieben 31. Oktober 2005 Geschrieben 31. Oktober 2005 ich will dich jetzt echt nicht verwirren, aber bist du dir sicher, dass das ein optimaler ansatz ist für eine datenbankähnliche anwendung? wie sieht denn dein NachnameFile genau aus? speicherst du darin nur nachnamen und eine datensatznummer oder wie oder was? versuche mal die zeilen in einer schleife auszulesen: Do While dateiNachnameFile.AtEndOfStream <> True eineZeile = dateiNachnameFile.ReadLine 'mach irgendwas mit eineZeile Loop z.b. kannst du im loop vergleichsoperationen zum suchen einbauen. zum FSO generell: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/sgProgrammingFileSystemObject.asp "working with files" beschreibt ganz gut die operationsarten (lesen, schreiben und erstellen) von FSO: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/sgworkingwithfiles.asp edit: und vermeide möglichst sachen wie OpenTextFile (NachnameFile, 8,True). verwende konstanten, in diesem fall ForAppending. du weisst sonst eine woche später nicht mehr, was da eigentlich programmiert wurde. ich selbst würde das jedenfalls etwas anders aufbauen, nämlich einen grundstock an basisfunktionen definieren, die mit deinen dateien, basierend auf FSO, umgeht. s'Amstel Zitieren
Smilla Geschrieben 31. Oktober 2005 Autor Geschrieben 31. Oktober 2005 Sorry für die Verwirrung, habe das wohl falsch verstanden. Also ich muss da erst ein Array bauen, dann Zeile für Zeile lesen irgendwie und dann halt splitten und nach dem Baustein (z.b. nachname) suchen... so ganz hab ichs auch noch nicht geblickt...:confused: *Erst mal über Array´s informier* : Zitieren
Smilla Geschrieben 4. November 2005 Autor Geschrieben 4. November 2005 Also so siehts jetzt aus (nur die Suche, mache dafür n extra Programm, ist sinnvoller finde ich) Option Explicit 'Globale Variablen Dim strSuche Dim sAdressFilePath Dim arrAdresse()'Array Dim iArrayElements iArrayElements = 1 ReDim preserve arrAdresse(6,1) sAdressFilePath = "U:\LisaJ_Scripte\adresse.txt" '================================================================= ' Main '================================================================= 'InputBox mit Frage nach Suchwort strSuche = InputBox ("Geben Sie bitte Ihren Suchbegriff ein!" , "Suchfunktion") 'Datei einlesen ReadEntireFile(sAdressFilePath) '================================================================= ' Functions und subs '================================================================= 'Erzeugt aus dem Inhalt der Datei ein tolles Array Sub AddToArray(sLine) Dim arTemp 'Variable für Temporäres Array iArrayElements = iArrayElements + 1 WScript.Echo "iArrayElements:" & iArrayElements & vbNewLine ReDim Preserve arrAdresse(6, iArrayElements) arTemp = Split(sline, ";") 'WScript.Echo UBound(arTemp) arrAdresse(0,iArrayElements) = arTemp(0) arrAdresse(1,iArrayElements) = arTemp(1) arrAdresse(2,iArrayElements) = arTemp(2) arrAdresse(3,iArrayElements) = arTemp(3) arrAdresse(4,iArrayElements) = arTemp(4) arrAdresse(5,iArrayElements) = arTemp(5) Dim i For i = 1 To UBound(arrAdresse,2) WScript.Echo arrAdresse(0,i) WScript.Echo arrAdresse(1,i) WScript.Echo arrAdresse(2,i) WScript.Echo arrAdresse(3,i) WScript.Echo arrAdresse(4,i) WScript.Echo arrAdresse(5,i) Next End Sub 'Laden der Daten Function ReadEntireFile(strAdressFilePath) Const ForReading = 1 Dim fso, theFile, retstring Set fso = CreateObject("Scripting.FileSystemObject") Set theFile = fso.OpenTextFile(strAdressFilePath, ForReading, False) Do While theFile.AtEndOfStream <> True AddToArray(theFile.ReadLine) Loop theFile.Close ReadEntireFile = retstring End Function Wenn ich als Suchbegriff jetzt beispielsweise "Hans" (also Vorname) eingebe, dann sollen alle Einträge mit dem Suchbegriff verglichen werden und es soll nach Übereinstimmungen gesucht werden, (mit ner For...Next Schleife). Wenn dann eine Übereinstimmung gefunden wurde soll die komplette Adresszeile in ein temporäres Array kopiert werden, wenn alle Einträge auf Übereinstimmung geprüft wurden, soll das Ergebnis ausgegeben werden. So, wie spreche ich in einer Schleife den Suchbegriff der eingegeben wurde an? Woher weis der Rechner das er dann nur bsp.weise in der Spalte Name suchen soll?? :confused: Zitieren
Smilla Geschrieben 7. November 2005 Autor Geschrieben 7. November 2005 Function SucheInArray() Dim i Dim arrTempAdresse() Dim iArrayElem2 iArrayElem2 = 0 For i = 1 To UBound(arrAdresse, 2) 'von 1 bis zum höchsten Index-Wert If strSuche = arrAdresse(1,i) Then 'Wenn der Suchbegriff = dem Feld (1,i) im Datenarray ist,dann... iArrayElem2 = iArrayElem2 + 1 'iArrayElem2 um 1 erhöhen WScript.Echo "iArrayElements:" & iArrayElem2 & vbNewLine ReDim Preserve arrTempAdresse(6, iArrayElem2) 'Deklaration eines dynamischen Array arrTempAdresse(0, iArrayElem2) = arrAdresse(0,i) arrTempAdresse(1, iArrayElem2) = arrAdresse(1,i) ' arrAdresse(1,iArrayElements) = arTemp(1) ' arrAdresse(2,iArrayElements) = arTemp(2) ' arrAdresse(3,iArrayElements) = arTemp(3) ' arrAdresse(4,iArrayElements) = arTemp(4) ' arrAdresse(5,iArrayElements) = arTemp(5) End If Next Ist jetzt n Codeausschnitt, wie sage ich da das WENN eine Übereinstimmung gefunden wurde, die entsprechende Zeile in ein neues Temporäres Array gespeichert werden soll? Zitieren
bascaro Geschrieben 7. November 2005 Geschrieben 7. November 2005 bei dem code wird doch schon auf übereinstimmung durchsucht und es kommen nur die Datensätze raus, die mit dem der Datenbank übereinstimmen Sprich: Wenn übereinstimmung da ist wird arrAdresse in arrTempAdresse kopiert anschließend hast du alle Datensätze im arrTempAdresse, die dem SuchString entsprechen Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.