Anddyy Geschrieben 22. Februar 2006 Geschrieben 22. Februar 2006 Hi Leute, brauch dringend Hilfe!!! Habe angefangen mit Visual Basic 6 zu Programmieren und nun habe ich die Aufgabe bekommen das was in dem FlexGrid steht zu speichern und es dann Automatisch wieder anzeigen zu lassen wenn das Programm neu gestartet wurde....??? Habe es schon geschaft das es in eine TextDatei speichert wurde aber nur eine Zeile und die anderen speichert er garnicht... Private Sub Comsave_Click() Dim Dateiname As String, DateiNr As Integer Dim Temp As String Dateiname = "Liesmich.txt" DateiNr = FreeFile Open Dateiname For Output As DateiNr Print #DateiNr, VSFlexGrid1.Cell(flexcpText, 1, 0) Print #DateiNr, VSFlexGrid1.Cell(flexcpText, 1, 1) Print #DateiNr, VSFlexGrid1.Cell(flexcpText, 1, 2) Close DateiNr End Sub Und das automatische Speichern wenn er das Programm wieder neu öffnet funktioniert auch nicht...??? Würde mich freuen über Beispiele oder über Lösungsmöglichkeiten. Ich bedanke mich hiermit schon im Vorraus Mfg Andy Zitieren
DevHB Geschrieben 22. Februar 2006 Geschrieben 22. Februar 2006 Nabend, Private Sub Comsave_Click() ' sowas macht man am Besten mit gleichen Datentypen! ' Dim Dateiname As String, DateiNr As Integer ' Dim Temp As String Dim sDateiName As String, sTemp As String Dim nDateiNr As Integer sDateiname = "C:\Liesmich.txt" DateiNr = FreeFile ' # fehlt Open sDateiname For Output As #nDateiNr ' das Semikolon am Ende bewirkt, dass ein Zeilenumbruch (z.B. VbCrLf) ans Ende der Zeile geschrieben wird ' alternativ: .... , VSFlexGrid1.Cell(...) & VbCrLf Print #nDateiNr, VSFlexGrid1.Cell(flexcpText, 1, 0); Print #nDateiNr, VSFlexGrid1.Cell(flexcpText, 1, 1); Print #nDateiNr, VSFlexGrid1.Cell(flexcpText, 1, 2); Close #nDateiNr End Sub Code ist ungetestet, ich würde den Inhalt des Grid auch vorher in eine String Variable schmeißen, besser für eventuelle spätere Verarbeitung. Ansonsten schau mal hier, dort ist das Dateihandling mit VB 6 gut beschrieben: http://www.activevb.de/tutorials/tut_speichern/speichern.html Schönen Abend. Zitieren
DevHB Geschrieben 23. Februar 2006 Geschrieben 23. Februar 2006 Bei Bedarf kann ich Dir eine Funktion schicken, die Dir den Flexgridinhalt in einen String transformiert, Zeilen durch "VBCrlf" und Spalten durch "TAB" getrennt. Zitieren
Anddyy Geschrieben 23. Februar 2006 Autor Geschrieben 23. Februar 2006 Hi, vielen dank für deine Nachricht hast mir echt weiter geholfen. Habe es geschaft es zu speichern( Jede Zeile). Hier mein Code: Private Sub Comsave_Click() Dim DateiName As String, Temp As String Dim DateiNr As Integer DateiName = "C:Liesmich.txt" DateiNr = FreeFile Open DateiName For Output As #DateiNr With Me.VSFlexGrid1 For i = 1 To .Rows - 1 Print #DateiNr, VSFlexGrid1.Cell(flexcpText, i, 0) Print #DateiNr, VSFlexGrid1.Cell(flexcpText, i, 1) Print #DateiNr, VSFlexGrid1.Cell(flexcpText, i, 2) Next End With Close #DateiNr End Sub Aber das Einlesen klappt nicht könntest du mir wieder ein Paar Anregungen geben...???? Wär echt super....vielen dank schon mal Habe es so probiert aber klapt leider nicht.... Hier mein Code: Private Sub Command1_Click() Dim DateiName As String, DateiNr As Integer Dim Temp As String DateiName = "C:Liesmich.txt" DateiNr = FreeFile Open DateiName For Input As #DateiNr Do While Not EOF(DateiNr) Line Input #DateiNr, Temp With Me.VSFlexGrid1 For i = 1 To .Rows - 1 Me.VSFlexGrid1.Cell(flexcpText, i, 0) = Temp Me.VSFlexGrid1.Cell(flexcpText, i, 1) = Temp Me.VSFlexGrid1.Cell(flexcpText, i, 2) = Temp Next End With Loop Close DateiNr End Sub Zitieren
DevHB Geschrieben 24. Februar 2006 Geschrieben 24. Februar 2006 hi, das einlesen klappte bei mir, wenn ich den Backslash bei "C:Liesmich" einfüge. Wenn Du einfach mal Open DateiName For Input As #DateiNr ' Do While Not EOF(DateiNr) Line Input #DateiNr, temp ' ausgabe im direktfenster Debug.Print temp Loop Close DateiNr machst, wirst Du sehen das er schon einließt. Erkläre am besten mal genau, was Du in dem FlexGrid wo darstellen willst. Ich denke, Du wirst am besten fahren, wenn Du den Dateiinhalt zeilenweise in ein Array packst und mit diesen das Flexgrid füllst. Zitieren
Anddyy Geschrieben 24. Februar 2006 Autor Geschrieben 24. Februar 2006 Hi, Danke für die Vorlage aber habe mein Problemm Schon gelöst... Er liest jetzt jede Zeile einzelnt ein. Hier mein Codde: Private Sub Form_Load() Dim DateiName As String, DateiNr As Integer Dim Temp As String DateiName = "C:Liesmich.txt" DateiNr = FreeFile Open DateiName For Input As #DateiNr Dim col As Long col = -1 Do While Not EOF(DateiNr) Line Input #DateiNr, Temp If col = 2 Then col = -1 col = col + 1 With Me.VSFlexGrid1 .Cell(flexcpAlignment, .Rows - 1, 0) = flexAlignCenterCenter .Cell(flexcpAlignment, .Rows - 1, 1) = flexAlignCenterCenter .Cell(flexcpAlignment, .Rows - 1, 2) = flexAlignCenterCenter If col = 0 Then .AddItem "" Me.VSFlexGrid1.Cell(flexcpText, .Rows - 1, col) = Temp End With Loop Close DateiNr End Sub Hoffe du kannst auch was damit anfangen...??? Habe aber schon wieder ein neues Problemm und zwar soll ich in einem VSFlesGrid eine Tabelle erstellen wo viele Zahlen drin stehen und da soll die Gröste Zahl am Anfang des VSFlexGrid stehen. Und fast das gleich soll bei meiner Zweiten aufgabe sein.. Er soll sich die Kleinste Zahl sich im VSFleGrid nemmen und dann einfach weiter Zählen. Zum Beispiel du hast die Zahlen 10 30 55 und die 23 dann müsste es so aussehen: 10 dann ist die nächst nähere Zahl die 30, 23 und die 55. So sollte es dann am schluss aussehen hoffe du kannst mir weiter helfen...??? MfG Andy Zitieren
DevHB Geschrieben 27. Februar 2006 Geschrieben 27. Februar 2006 Moin, nein, ich verstehe den Sinn hinter der 2. Aufgabe nicht. Wieso ist die nächst nährere Zahl von 10 30 und nicht 23? Soll das eine Sortierung des Flexgrids werden? Zitieren
Anddyy Geschrieben 28. Februar 2006 Autor Geschrieben 28. Februar 2006 Hi, upps hast recht hab mich vertan ja es soll eine Sortierung des FlexGrids werden.. Ich denke ich habe es fast gelöst nur leider kann ich mit dem Code nur Alphabetisch sortieren ….. Me.VSFlexGrid1.Select 1, 0 Me.VSFlexGrid1.Sort = flexSortGenericAscending Zitieren
DevHB Geschrieben 1. März 2006 Geschrieben 1. März 2006 Hi, hier gibt es eine Demo für das Grid: http://www.activevb.de/cgi-bin/upload/download.pl?id=480 Musst mal bei "Sortieren" schauen. 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.