/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Filter på table
Fra : Kent Johansen


Dato : 20-12-00 12:17

Jeg har et problem jeg efter utallige forsøg ikke kan løse, så jeg håber en
af jer kan være behjælpelige.

Jeg skal have filtreret et dataset på 2 felter. De 3 felter er fra 2
forskellige tabeller, som følger

Felter i table1: med_nr, med_navn, startdato, slutdato (og et par flere)
Felter i table2: med_nr, holdnr

På min form har jeg et grid der indeholder felterne: med_nr, med_navn,
holdnr, startdato, slutdato

Nu vil jeg så give mulighed for at der kan vælges et holdnr, og tabellen
dermed bliver filtreret på det indtastede holdnr. Samtidig skal der
filtreres på om der er indtastet en slutdato, således det er muligt at få en
oversigt kun med dem, hvor der enten er eller ikke er indtastet en slutdato.

Det vil vel komme til at se nogenlunde sådan ud. Indtastet i eventen
OnFilterRecord for table1.

accept:=(table1['Slutdato']<>null) and (table1['Holdnr']=combobox1.text);

Ved dette fås en fejl ved runtime der lyder "Invalid variant type
conversion".

Er der nogen der har en løsning på dette?????


--

Med venlig hilsen

Kent Johansen



 
 
Nicolai Lang (20-12-2000)
Kommentar
Fra : Nicolai Lang


Dato : 20-12-00 14:25

On Wed, 20 Dec 2000 12:17:05 +0100, "Kent Johansen"
<kentjohansen@get2net.dk> wrote:

>accept:=(table1['Slutdato']<>null) and (table1['Holdnr']=combobox1.text);
>
>Ved dette fås en fejl ved runtime der lyder "Invalid variant type
>conversion".

Du gør lidt galt her. Jeg ville skrive:

accept := (not table1.FieldByname('SlutDato').IsNull) and
(table1.FieldByname('Holdnr').AsString = ComboBox1.Text);

Eller hvis du har persistent fields (det bruger jeg altid når jeg
kan):

accept := (not table1SlutDato.IsNull) and
(table1Holdnr.AsString = ComboBox1.Text);

- Nicolai

--
Custom development of Novell & GroupWise extensions
Need overview of your employees calendar at once?
See http://datanet.bcp.dk/busywise/help.htm

Kent Johansen (20-12-2000)
Kommentar
Fra : Kent Johansen


Dato : 20-12-00 15:03

"Nicolai Lang" <nicolai@spamcop.net> skrev i en meddelelse
news:ujc14t4t2l9dk36bienlgjuerr91eih9nt@4ax.com...
> On Wed, 20 Dec 2000 12:17:05 +0100, "Kent Johansen"
> <kentjohansen@get2net.dk> wrote:
>
> >accept:=(table1['Slutdato']<>null) and (table1['Holdnr']=combobox1.text);
> >
> >Ved dette fås en fejl ved runtime der lyder "Invalid variant type
> >conversion".
>
> Du gør lidt galt her. Jeg ville skrive:
>
> accept := (not table1.FieldByname('SlutDato').IsNull) and
> (table1.FieldByname('Holdnr').AsString = ComboBox1.Text);
>
> Eller hvis du har persistent fields (det bruger jeg altid når jeg
> kan):
>
> accept := (not table1SlutDato.IsNull) and
> (table1Holdnr.AsString = ComboBox1.Text);

Jeg har afprøvet dit forslag, men ny er resultatet tomt - Der er ingen
records der matcher. Jeg har ved debugging fundet ud af, at alle de records
der er i tabellen returnere "#1" for udtrykket "table1Holdnr.AsString". Den
returnerede denne værdi, da jeg i databasen (Access) havde defineret feltet
som et lookup i en anden tabel. Så ved ændring i databasen virker det som
hensigten.

Ellers tak for hjælpen.

MVH

Kent Johansen




> - Nicolai
>
> --
> Custom development of Novell & GroupWise extensions
> Need overview of your employees calendar at once?
> See http://datanet.bcp.dk/busywise/help.htm



Nicolai Lang (20-12-2000)
Kommentar
Fra : Nicolai Lang


Dato : 20-12-00 15:57

On Wed, 20 Dec 2000 15:03:01 +0100, "Kent Johansen"
<kentjohansen@get2net.dk> wrote:

>Jeg har afprøvet dit forslag, men ny er resultatet tomt - Der er ingen
>records der matcher.

Ja, men så er syntaxen ihvertfald i orden. Så skal vi bare finde ud af
det næste:

>Jeg har ved debugging fundet ud af, at alle de records
>der er i tabellen returnere "#1" for udtrykket "table1Holdnr.AsString". Den
>returnerede denne værdi, da jeg i databasen (Access) havde defineret feltet
>som et lookup i en anden tabel. Så ved ændring i databasen virker det som
>hensigten.

Vil det sige du har lavet det som en relation til en anden tabel, der
så indeholder en primærnøgle der repræsenteres i tabel1, og
holdnr/navn som andre attributter?

Jeg har ikke brugt Access særlig meget. så "lookup" siger mig ikke så
meget i den henseende. Men hvis det er en relation, skal du jo gå
igennem den.

Er der evt. en som bruger Access der kan træde til her, med hvad #1
betyder.

Har du oprettet mere end ét hold indtil videre?

Hvis du har lavet det som en relation, skal du slå Combobox1.text op i
den relaterende tabel, og bruge nøgleværdien herfra i din filter
funktion.

- Nicolai
--
Custom development of Novell & GroupWise extensions
Need overview of your employees calendar at once?
See http://datanet.bcp.dk/busywise/help.htm

Kent Johansen (21-12-2000)
Kommentar
Fra : Kent Johansen


Dato : 21-12-00 09:21

"Nicolai Lang" <nicolai@spamcop.net> skrev i en meddelelse
news:0vh14tkp6bi9aokoeqi309dg20bpocrcaj@4ax.com...
> On Wed, 20 Dec 2000 15:03:01 +0100, "Kent Johansen"
> <kentjohansen@get2net.dk> wrote:
>
> >Jeg har afprøvet dit forslag, men ny er resultatet tomt - Der er ingen
> >records der matcher.
>
> Ja, men så er syntaxen ihvertfald i orden. Så skal vi bare finde ud af
> det næste:
>
> >Jeg har ved debugging fundet ud af, at alle de records
> >der er i tabellen returnere "#1" for udtrykket "table1Holdnr.AsString".
Den
> >returnerede denne værdi, da jeg i databasen (Access) havde defineret
feltet
> >som et lookup i en anden tabel. Så ved ændring i databasen virker det som
> >hensigten.
>
> Vil det sige du har lavet det som en relation til en anden tabel, der
> så indeholder en primærnøgle der repræsenteres i tabel1, og
> holdnr/navn som andre attributter?

Ja

>
> Jeg har ikke brugt Access særlig meget. så "lookup" siger mig ikke så
> meget i den henseende. Men hvis det er en relation, skal du jo gå
> igennem den.

Jeg har forsøgt at skrive følgende:

accept := (not table1.FieldByname('SlutDato').IsNull) and
(table2.FieldByname('Holdnr').AsString = ComboBox1.Text);

Hvor table 2 er den tabel, der indeholder holdnr. og så et par yderligere
felter, men det ser ikke ud til at virke. Jeg får fortsat en tom søgning

> Er der evt. en som bruger Access der kan træde til her, med hvad #1
> betyder.
>
> Har du oprettet mere end ét hold indtil videre?

Ja, jeg har 10 forskellige hold

> Hvis du har lavet det som en relation, skal du slå Combobox1.text op i
> den relaterende tabel, og bruge nøgleværdien herfra i din filter
> funktion.
>
> - Nicolai
> --
> Custom development of Novell & GroupWise extensions
> Need overview of your employees calendar at once?
> See http://datanet.bcp.dk/busywise/help.htm



Nicolai Lang (21-12-2000)
Kommentar
Fra : Nicolai Lang


Dato : 21-12-00 13:24

Hej Kent,

On Thu, 21 Dec 2000 09:21:28 +0100, "Kent Johansen"
<kentjohansen@get2net.dk> wrote:

>Jeg har forsøgt at skrive følgende:

>accept := (not table1.FieldByname('SlutDato').IsNull) and
> (table2.FieldByname('Holdnr').AsString = ComboBox1.Text);

Det er ikke det helt rette at gøre.

Jeg vil mene vejen at gå her, er master/detail, hvor det du kalder
Table2 er master, Table1 er detail og join-feltet så er det felt der
er referencen mellem de 2 tabeller.

Jeg har Access installeret her (97), så hvis du sender mig DFM, PAS og
DPR filerne, samt databasen skal jeg gerne prøve at give et bud på
hvordan det kan løses.

Evt. blot send databasen, hvis der er mange specielle komponenter
eller forme i projektet. Send det til nicolai@hjorth.com - spamcop
adressen har ikke så godt af attachments.

- Nicolai
--
Custom development of Novell & GroupWise extensions
Need overview of your employees calendar at once?
See http://datanet.bcp.dk/busywise/help.htm

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste