Access 2000 project/ServerFilter

Meneekö vähän hermot kun kummittelee yksi ongelma eräässä kannassa.

Eli ekalla lomakkeella kysyn mitä halutaan hakea ja toiseen lomakkeeseen tuodaan esille lista hakukriteerit täyttävistä tietueista.

No nyt kuitenkin jostain syystä tähän listaus lomakkeeseen jää kummittelemaan vanhoja hakuarvoja. Eli jos haen kaikki tietueet missä joku kriteeri on "AB" ja sen jälkeen haen "CB" kriteerillä se palauttaa ekan haun tulokset.

Olen kokeillut tehdä kahdella tavalla.

eli OpenFormin Where conditionissa annan haettavat arvot:

DoCmd.OpenForm Formi, , , kriteerit

ja olen passannut Openargumenteina arvot listaus lomakkeeseen jossa Open kohdassa teen seuraavat:

Me.ServerFilter = Me.OpenArgs
Me.Requery

Se saattaa toimi hetken mutta sitten soittaa käyttäjä että tämä ei palauta oikeita tietueita haussa. Eli auttakkee..

Kysykää jos olin epäselvä..
4128
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

Siis jos olin epäselvä niin olen kokeillut avata listaus lomaketta molemmilla tavoilla. eli sekä ton where conditionion avulla ja openargumenttien kautta. ja molemmisssa tuppaa olemaan sama herja.

Äänestä

Kahden lomakkeen järjestelysi toimii ilmeisesti aina oikein ensimmäisellä kyselykerralla. Ongelmasi vaikuttaisi liittyvän siihen, että openargs:it eivät päivity oikein.

Kysymys: Jääkö listauslomake auki ensimmäisen haun jälkeen, vai suljetko sen aina ennen seuraavaa hakua ?

Jos olet aikaisemmin jättänyt lomakkeen auki, niin kokeile, onko sulkemisella vaikutusta halutulosten oikeellisuuteen.

Toinen juttu: kannattaa ehdottomasti laittaa jonkinlainen debugtulostus listauslomakkeen koodiin, jotta saat tolkkua sille syötettävistä parametreista.

Äänestä
  • Ei jää auki.. ja Openargsit päivittyvät oikein. Siis olen debugannut sille välitetyt tiedot.

    Lisäksi olen kokeillut laittaa lomakkeen Close koodiin pätkän joka tyhjää ja poistaa serverfilterin...

    Ja kun filtteri jää kerran päälle niin sen filterin saa poistettua muokkaamalla lomaketta poistamalla mahdolliset serverfilter asetukset joita ei edes välttämättä ole ja tallentamalla lomakkeen uudestaan.

    Äänestä

  • Epätoivoinen kirjoitti:

    Ei jää auki.. ja Openargsit päivittyvät oikein. Siis olen debugannut sille välitetyt tiedot.

    Lisäksi olen kokeillut laittaa lomakkeen Close koodiin pätkän joka tyhjää ja poistaa serverfilterin...

    Ja kun filtteri jää kerran päälle niin sen filterin saa poistettua muokkaamalla lomaketta poistamalla mahdolliset serverfilter asetukset joita ei edes välttämättä ole ja tallentamalla lomakkeen uudestaan.

    En ole koskaan käyttänyt tuota serverfilter:iä, vaan rakentanut dynaamiset sql-lauseet seuraavan rungon mukaan:

    Kaksi formia, päälomake formA sekä alilomake ChildFormB. Päälomakkeella vaikka dropdown "cbVuosi", jonka arvo halutaan syöttää alilomakkeelle. Lisäksi painike "btnHaeArvot", jota painamalla alilomake päivittyy (tässä esimerkissä alilomake tietty vastaa oman tapauksesi kakkoslomaketta).


    [tämä koodi siis "formA":ssa upotettuna painikkeeseen "btnHaeArvot"]

    Private Sub btnHaeArvot_Click()

    dim paramVuosi as string
    dim sql as string

    ' sijoita dropdownin arvo muuttujaan
    paramVuosi = me!cbVuosi

    ' muodosta sql-lause
    sql = SELECT id, name FROM tableA WHERE vuosi = paramVuosi

    ' päivitä alilomakkeen recordsource
    Me![ChildFormB].Form.RecordSource = sql

    end sub



    [koodin toimivuutta ei tarkistettu]

    Tämä runko toimii niin lomakkeissa kuin raporteissakin. Ja kun where-ehdot ovat koodin sisällä, niitä voi pyörittää miten haluaa.

    Luonnollisesti joutuisit muokkaamaan tuota recordsourcea päivittävää riviä siten, että se viittaa kakkosformin recordsourceen. Jotenkin näin:

    Forms![formB].Form.RecordSource = sql

    Äänestä

Kommentoi aloitusta


Epätoivoinen kirjoitti:

Meneekö vähän hermot kun kummittelee yksi ongelma eräässä kannassa.

Eli ekalla lomakkeella kysyn mitä halutaan hakea ja toiseen lomakkeeseen tuodaan esille lista hakukriteerit täyttävistä tietueista.

No nyt kuitenkin jostain syystä tähän listaus lomakkeeseen jää kummittelemaan vanhoja hakuarvoja. Eli jos haen kaikki tietueet missä joku kriteeri on "AB" ja sen jälkeen haen "CB" kriteerillä se palauttaa ekan haun tulokset.

Olen kokeillut tehdä kahdella tavalla.

eli OpenFormin Where conditionissa annan haettavat arvot:

DoCmd.OpenForm Formi, , , kriteerit

ja olen passannut Openargumenteina arvot listaus lomakkeeseen jossa Open kohdassa teen seuraavat:

Me.ServerFilter = Me.OpenArgs
Me.Requery

Se saattaa toimi hetken mutta sitten soittaa käyttäjä että tämä ei palauta oikeita tietueita haussa. Eli auttakkee..

Kysykää jos olin epäselvä..

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu