Download the free trial version
Basic4android Video
Features
Tutorials and manuals
Showcase
Screenshots

Go Back   Android Development Forum - Basic4android > Foreign Languages > German Forum
Documentation Wiki Register Members List B4P Search Today's Posts Mark Forums Read

Zuerst eine Tabelle filtern und dann in eine bestimmte Spalte einen Wert setzen

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 09-28-2009, 01:52 PM
Basic4ppc Veteran
 
Join Date: Jul 2008
Location: Schwäbisch Gmünd
Posts: 353
Question Zuerst eine Tabelle filtern und dann in eine bestimmte Spalte einen Wert setzen

Hallo Forum,

Wie man in eine bestimmte Spalte in allen Reihen einen Wert gleichzeitig einsetzt, weiß ich schon:
Code:
For i = 0 To TabelleVMatGesamt1.RowCount -1
     TabelleVMatGesamt1.Cell (
"Vorgang", i) = "bestellt"
Next
Jetzt möchte ich aber zuerst eine Tabelle filtern, und dann nur in die gefilterten Reihen gleichzeitig einen Wert einsetzen.

Beispiel:
Code:
TabelleVMatGesamt1.Filter  ("Vorgang LIKE  'noch zu bestellen' ")   'sucht den genauen Begriff
... nach diesem Filtervorgang funktioniert der obige Code nicht mehr.

Weiß jemand Rat?
__________________
JOTHA | Greetz from the Schwabenländle.
Pocket-PC: HTC HD2 (Dual-Boot WindowsMobile 6.51 + Android 2.2 Froyo)
Reply With Quote
  #2 (permalink)  
Old 09-28-2009, 08:12 PM
specci48's Avatar
Basic4ppc Expert
 
Join Date: Apr 2007
Location: Germany
Posts: 1,057
Awards Showcase
Beta Tester Forum Contributer 
Total Awards: 2
Default

Hallo JOTHA,

was meinst Du mit
Quote:
Originally Posted by JOTHA View Post
... funktioniert der obige Code nicht mehr.
Wird 'nichts' oder 'falsches' ersetzt?

Im Prinzip ist der Code auch für eine gefilterte Tabelle korrekt. Ist Dein Filter eventuell falsch gesetzt?


Gruß
specci48
Reply With Quote
  #3 (permalink)  
Old 09-28-2009, 09:14 PM
Basic4ppc Veteran
 
Join Date: Jul 2008
Location: Schwäbisch Gmünd
Posts: 353
Arrow

Hallo specci48,

auch noch so spät "unterwegs"?

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)
Reply With Quote
  #4 (permalink)  
Old 09-28-2009, 09:33 PM
specci48's Avatar
Basic4ppc Expert
 
Join Date: Apr 2007
Location: Germany
Posts: 1,057
Awards Showcase
Beta Tester Forum Contributer 
Total Awards: 2
Default

Hallo JOTHA,

zu manchen Dingen kommt man leider erst etwas später am Abend...

Also, Dein Filter funktioniert, nur der Laufindex ist nicht korrekt.

Die Funktion RowCount liefert immer die Anzahl der angezeigten Einträge einer Tabelle zurück, daher sollte der Index auch hier korrekt sein.

Hast Du den Laufindex mal mit Hilfe der Debug-Funktion kontrolliert? Benutzt Du auch die korrekten Variablen?


Gruß
specci48

P.S.: Sofern Du den aktuellen Programmstand posten kannst bzw. möchtest, würde ich auch direkt mal reinschauen...
Reply With Quote
  #5 (permalink)  
Old 09-29-2009, 10:09 AM
Basic4ppc Veteran
 
Join Date: Jul 2008
Location: Schwäbisch Gmünd
Posts: 353
Arrow

Hallo specci48,

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 = 0 To 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 = 0 To 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 = 0 To 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)
Reply With Quote
  #6 (permalink)  
Old 09-29-2009, 04:36 PM
Senior Member
 
Join Date: Dec 2007
Posts: 149
Awards Showcase
Beta Tester Beta Tester 
Total Awards: 2
Default Könnte es an der Tabelle liegen?

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.

Viel Spaß noch beim hacken

Bernd Gödecke
Reply With Quote
  #7 (permalink)  
Old 09-29-2009, 06:59 PM
specci48's Avatar
Basic4ppc Expert
 
Join Date: Apr 2007
Location: Germany
Posts: 1,057
Awards Showcase
Beta Tester Forum Contributer 
Total Awards: 2
Default

Quote:
Originally Posted by berndgoedecke View Post
...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...


Gruß
specci48
Reply With Quote
  #8 (permalink)  
Old 09-29-2009, 07:47 PM
Basic4ppc Veteran
 
Join Date: Jul 2008
Location: Schwäbisch Gmünd
Posts: 353
Arrow

Hallo specci48,

vielen Dank für deine Hilfe !

Das ist die Lösung:
Quote:
Originally Posted by specci48 View Post
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)
Reply With Quote
  #9 (permalink)  
Old 09-29-2009, 08:14 PM
Basic4ppc Veteran
 
Join Date: Jul 2008
Location: Schwäbisch Gmünd
Posts: 353
Exclamation ... funzt doch noch nicht!

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)
Reply With Quote
  #10 (permalink)  
Old 09-30-2009, 09:01 AM
Basic4ppc Veteran
 
Join Date: Jul 2008
Location: Schwäbisch Gmünd
Posts: 353
Wink Funzt jetzt, aber mit einer anderen Lösung ...

An alle, die das vielleicht interessieren könnte:

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 = 0 To 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 = 0 To 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 = 0 To 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)

Last edited by JOTHA : 09-30-2009 at 09:13 AM.
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
Eine Spalte in einer Tabelle füllen ... JOTHA German Forum 1 08-10-2009 10:10 AM
Eine kleine Frage zu SQL ... JOTHA German Forum 4 05-26-2009 06:41 PM
Wie Spalte in Tabelle nachträglich einfügen ? Paulsche German Forum 2 03-07-2009 09:18 PM
Auslesen einer Tabelle in eine Textbox und löschen von "0,00-Ergebnissen" JOTHA German Forum 8 11-29-2008 08:50 AM
Mehrere Einträge in eine TextBox Bobbes German Forum 2 02-27-2008 07:06 PM


All times are GMT. The time now is 07:48 PM.


Powered by vBulletin® Version 3.6.12
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0