Wenn ich die Funktion ohne vorigen Filter ausführe, funktioniert es.
Wenn ich das Ganze ausführe, nachdem die Tabelle gefiltert wurde und nur noch die gefilterten Einträge zu sehen sind, kommt folgende Meldung:
Quote:
Der Index 15 ist entweder negativ oder über der Gesamtanzahl der Zeilen. Continue?
Die Tabelle hat vor der Filterung 43 Datensätze und nach der Filterung noch 30 Datensätze.
In diese 30 Datensätze soll dann anstelle "noch zu bestellen" das Wort "bestellt" eingesetzt werden.
__________________
JOTHA | Greetz from the Schwabenländle.
Pocket-PC: HTC HD2 (Dual-Boot WindowsMobile 6.51 + Android 2.2 Froyo)
leider konnte ich mich gestern abend nicht mehr melden.
Quote:
Originally Posted by specci48
Also, Dein Filter funktioniert, nur der Laufindex ist nicht korrekt.
Ich poste mal den Code für den Vorgang:
Code:
Sub RadioBtnBestellungPerTelefax_Click
''Zuerst die Tabelle filtern: 'TabelleVMatGesamt1.Filter ("Vorgang LIKE 'noch zu bestellen' ") 'sucht den genauen Begriff (!) TabelleVMatGesamt1.Filter = ""'l�scht den Filter
'Tr�gt in der gefilterten Tabelle in allen Reihen in der Spalte "Vorgang" das Wort "bestellt" ein: For i = 0To TabelleVMatGesamt1.RowCount -1 TabelleVMatGesamt1.Cell ("Vorgang", i) = "bestellt" Next
'Tr�gt in der gefilterten Tabelle in allen Reihen in der Spalte "Datum" das heutige Datum ein: For i = 0To TabelleVMatGesamt1.RowCount -1 TabelleVMatGesamt1.Cell ("Datum", i) = Date(Now) Next
'Tr�gt in der gefilterten Tabelle in allen Reihen in der Spalte "Bestellung" "Per Telefax" ein: For i = 0To TabelleVMatGesamt1.RowCount -1 TabelleVMatGesamt1.Cell ("Bestellung", i) = ""&VMatBestellungPerTelefax.Text&" ("&VMatBestellungBei1.Text&")" Next
'Speichert die Daten als CSV-Datei: TabelleVMatGesamt1.SaveCSV ("- Tabelle - V-Mat.CSV", ";", True)
End Sub
Wenn ich den Filter gelöscht habe, funktioniert alles soweit.
Wenn ich den Filter aktiviert habe, kommt die Fehlermeldung (wie gehabt).
Das gibt es doch nicht !
Quote:
P.S.: Sofern Du den aktuellen Programmstand posten kannst bzw. möchtest, würde ich auch direkt mal reinschauen...
Der Programmstand ist sehr umfangreich und es würde länger dauern, bis ich dabei alles erklärt habe. Die Funktion kommt erst nach einer mehrstufigen Abfrage mit "Ja/Nein" und "OK-Buttons" zur Ausführung. Da sollte eigentlich kein Fehler drin sein, bis zu diesem Punkt funktioniert ja alles.
__________________
JOTHA | Greetz from the Schwabenländle.
Pocket-PC: HTC HD2 (Dual-Boot WindowsMobile 6.51 + Android 2.2 Froyo)
Hallo Jotha,
ich glaube es liegt daran, dass die Tabellendaten nach jeder Veränderung aktualisiert werden. Wenn du dann die Spalte veränderst, die du gefiltert hast,
dürften am Ende keine Daten mehr angezeigt werden. Deswegen kommt dann auch der anfänglich ermittelte Zähler nicht mehr hin.
Es sollte eigentlich klappen wenn du die Filter Tabelle nicht anzeigst und die Veränderung auf SQlite-Ebene mit "INSERT OR REPLACE INTO [Tabelle](TY,HN,DA) VALUES(" & Chr(34) & TYWert & Chr(34) & "," & Chr(34) & HNWert & Chr(34) & "," & Chr(34) & DAWert & Chr(34) & ")" , Danach sollte es keinen Filter mehr zum Anzeigen geben, da ja alle Datensätze die dem Filterkriterium entsprachen, jetzt geändert sind.
Ich würde gern ein kleines Beispiel dazu geben, bin aber im Moment mit einem eigenen Projekt sehr beschäftigt.
Teste es einfach mal an, es wäre auf jedenfall eine logische Erklärung.
PS.: Ich persönlich bevorzuge das ListView aus der ControlsEx DLL zur Darstellung der Daten.
...ich glaube es liegt daran, dass die Tabellendaten nach jeder Veränderung aktualisiert werden.
So sehe ich das auch.
Laut Post #3 hat die gefilterte Tabelle 30 Einträge und der Index meckert an Position 15. Hier sind bereits 15 Einträge abgearbeitet (Positionen 0 - 14), es bleiben also noch 15 übrig. Der Index ist 15, womit eigentlich die 16te Zeile angesprochen wird und da greift das Programm nun mal ins leere.
Falls Du weiterhin mit einem Filter auf der Tabelle arbeiten willst, dann sind zwei Änderungen notwendig.
1. Mit einer While-Schleife immer die erste Zeile abarbeiten, bis die Tabelle (gefiltert) leer ist.
2. Erst die Änderungen in den Spalten "Datum" und "Bestellung" vornehmen und die Spalte "Vorgang" unbedingt als letztes Kriterium korigieren, da nach Änderung des Vorganges gleich der Filter greift und die Zeile verschwindet...
Erst die Änderungen in den Spalten "Datum" und "Bestellung" vornehmen und die Spalte "Vorgang" unbedingt als letztes Kriterium korigieren, da nach Änderung des Vorganges gleich der Filter greift und die Zeile verschwindet...
Das Ganze funktioniert auch ohne die While-Schleife.
Würdest Du hier trotzdem einmal die Zeile mit der While-Schelife posten (nur für alle Fälle) ?
Vielleicht interessiert das ja auch andere "Mitleser".
@berndgoedecke:
Quote:
Ich persönlich bevorzuge das ListView aus der ControlsEx DLL zur Darstellung der Daten.
Die ListView.DLL von Filippo finde ich auch hervorragend, aber da ist mir das Filtern noch zu kompliziert ...
Danke nochmals an euch beide !
__________________
JOTHA | Greetz from the Schwabenländle.
Pocket-PC: HTC HD2 (Dual-Boot WindowsMobile 6.51 + Android 2.2 Froyo)
Leider funktioniert es doch nicht nur mit der einen Umstellung.
Ich hatte aus Versehen wieder den Filter aus der Tabelle genommen (da hat es ja schon funktioniert) und gemeint, es würde jetzt nach der Umstellung mit Filter funktionieren.
Ich muß also doch die While-Schleife einbauen.
Ich probiers mal ...
__________________
JOTHA | Greetz from the Schwabenländle.
Pocket-PC: HTC HD2 (Dual-Boot WindowsMobile 6.51 + Android 2.2 Froyo)
Mit der While-Schleife hat das auch nicht geklappt. Sehr wahrscheinlich habe ich das eben nicht richtig eingesetzt. Nachdem ich also lange "rumprobiert" habe, bin ich auf eine Idee gekommen:
Ich habe die Tabelle um eine Spalte namens "StandVorher" erweitert. Dorthin habe ich dann den Wert, den ich eigentlich in die "gefilterte" Spalte eintragen wollte, eintragen lassen.
Danach habe ich die Tabelle ERNEUT gefiltert, diesmal nach dem Inhalt in der Spalte "StandVorher".
Jetzt kann es logischerweise kein Problem mehr sein, eine andere Spalte (also die Spalte, die ich vorher eigentlich füllen wollte) zu füllen.
... und siehe da: Es klappt !
Ergebnis: In der Spalte "AktuellerStand" wird jetzt alles wunschgemäß gefüllt.
Hier ist der Code:
Code:
'Tr�gt in der gefilterten Tabelle in allen Reihen in der Spalte "Datum" das heutige Datum ein: For i = 0To TabelleVMatGesamt1.RowCount -1 TabelleVMatGesamt1.Cell ("Datum", i) = Date(Now) Next
'Tr�gt in der gefilterten Tabelle in allen Reihen in der Spalte "StandVorher" die Phrase "noch zu bestellen" ein: For i = 0To TabelleVMatGesamt1.RowCount -1 TabelleVMatGesamt1.Cell ("StandVorher", i) = "noch zu bestellen" Next
'Die Tabelle ERNEUT filtern und zwar JETZT nach ... TabelleVMatGesamt1.Filter ("StandVorher LIKE 'noch zu bestellen' ")
'Jetzt kann man in den VORIGEN Filter die Daten eintragen lassen: For i = 0To TabelleVMatGesamt1.RowCount -1 TabelleVMatGesamt1.Cell ("AktuellerStand", i) = "bestellt" Next
Viel Spaß damit !
__________________
JOTHA | Greetz from the Schwabenländle.
Pocket-PC: HTC HD2 (Dual-Boot WindowsMobile 6.51 + Android 2.2 Froyo)