|
|
 | | From: | Rene Debrunner EDV | | Subject: | Filterproblem | | Date: | Sun, 23 Jan 2005 18:56:15 +0100 |
|
|
 | Hallo
Ich habe ein Filterproblem und vielleicht kann mir jemand einen guten Typ geben.
In einer Tabelle habe ich Normalaufträge (N-30000), Sammelaufträge (R-30001) und Abrufaufträge (A-30002)
abgelegt. Diese werden alle in der Auftragsinfo in einem Grid angezeigt. Nun will ich aber wenn der Benutzer mittels Button eine von den 3 verschiedenen Auftragarten anwählt, auch nur diese entsprechenden Aufträge im Grid angezeigt werden.
Ich habe das mittels UdateSet und einem Filter mit SUBSTR wie unten versucht und es ist mit folgender fehlgeschlagen: Fehler der Datenbank-Engine: Operation nicht anwendbar.
Hier der Programm-Script:
form.q_auftragart.active = false
_app.databases[1].emptyTable( "Auftragart" )
local q, u, cFilter
q = New Query()
q.sql = "select * from Auftrag.dbf"
q.active = true
q.rowset.indexName = "cAuftrnr"
cFilter = "N"
q.rowset.filter=[SUBSTR(cAuftrnr,1,1)=']+cFilter+[']
u = New UpdateSet()
u.source = q.rowset
u.destination = "Auftragart.dbf"
u.append()
q = NULL
u = NULL
Ich hoffe, dass mir jemand einen guten Typ geben kann.
Gruss aus der Schweiz
René
|
|
 | | From: | Marc VdB | | Subject: | Re: Filterproblem | | Date: | Sun, 23 Jan 2005 21:47:35 +0100 |
|
|
 | Hallo Rene,
> Ich habe ein Filterproblem und vielleicht kann mir jemand einen guten Typ > geben.
Eine möglich Lösung sieht wie folgt aus : einfach alles in eine Datei rene.wfm kopieren und starten. Ich hoffe es hilft, Viele Grüße, Marc
**** Beginn von Rene.wfm
if not file('rene.dbf') // Falls Testtabelle nicht vorhanden create table Rene (cauftrnr char(30)) q=new query() q.sql='select * from rene' q.active=true for i=1 to 30 q.rowset.beginappend() q.rowset.fields[1].value='N-'+str(i,4,0,'0') q.rowset.beginappend() q.rowset.fields[1].value='R-'+str(i,4,0,'0') q.rowset.beginappend() q.rowset.fields[1].value='A-'+str(i,4,0,'0') q.rowset.save() endfor q.active=false endif ** END HEADER -- do not remove this line // // Generated on 23.01.2005 // parameter bModal local f f = new reneForm() if (bModal) f.mdi = false // ensure not MDI f.readModal() else f.open() endif class reneForm of FORM with (this) height = 13.0 ; left = 56.0 top = 4.0 ; width = 47.0 endwith
this.RENE1 = new QUERY() this.RENE1.parent = this with (this.RENE1) sql = 'select * from "Rene.DBF"' active = true endwith
this.pb1 = new renebutton(this) with (this.pb1) top=0.5 text = "Normalaufträge" endwith this.pb2 = new renebutton(this) with (this.pb2) top=2.5 text = "Sammelaufträge" endwith this.pb3 = new renebutton(this) with (this.pb3) top=4.5 text = "Abrufaufträge" endwith this.pb4 = new renebutton(this)
this.GRID1 = new GRID(this) with (this.GRID1) dataLink = form.rene1.rowset height = 12.0 ; left = 2.0 top = 0.5 ; width = 21.0 endwith
this.rowset = this.rene1.rowset endclass
Class Renebutton(oparent) of pushbutton(oparent) with(this) left=25 ; width=16 height=1; top=6.5 text="Alle" onclick=class::filtergrid endwith
function filtergrid local f1,f2 do case case this.text="Normalaufträge" ; f1='N';f2='R' case this.text="Sammelaufträge" ; f1='R';f2='S' case this.text="Abrufaufträge" ; f1='A';F2='N' case this.text="Alle" ; f1='A' ; f2='Z' endcase form.rowset.filter=[ cauftrnr > ']+f1+['and cauftrnr < ']+f2+['] return endclass
*** Ende von Rene.wfm
-- ------ www.vdblogic.de/dbl/homee.htm ------
|
|
 | | From: | Rene Debrunner EDV | | Subject: | Re: Filterproblem | | Date: | Mon, 24 Jan 2005 10:33:59 +0100 |
|
|
 | Hallo
Ich habe den Vorschlag von Marc natürlich sofort ausprobiert und es hat auf Anhieb super geklappt. Vielen Dank Marc, Du hast was gut bei mir!!
Gruss René
|
|
|