ADO vs. Access

MRA

Pientä apua pyydetään. Kun lähetän parametrinä sql-lausekkeen ASP-sivulla Recordset objektille käyttämällä metodia Open ja sql lausekkeessa käytän LIKE avainsanaa ADO:lla yhtään tulosta ei synny mutta kun kokeilen aivan samaa kyselyä suoraan Accessista, toimii loistavasti. Mikä on pielessä, onko se ODBC-ajuri vai ADO:n dll joka tuottaa ongelmia? Apuva!

7

1122

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • aspisti

      Moikka

      Et ilmeisesti saa minkäänlaista virheilmoitusta mistään???

      Laita koodi, mitä tarkoitat, niin katsotaan mitä sieltä löytyy.

      T.Aspisti

      • MRA

        Ei tule minkäänlaista virheilmoitusta, vaan recordset-objekti ei palauta yhtään tulosta kun taas Accesissa tuloksia löytyy.

        Homma toimii tähän tapaan:

        Set rec = Server.CreateObject("ADODB.Recordset")

        rec.Open sqllauseke, dsnyhteys

        If Not (rec.BOF And rec.EOF) Then
        'koodia
        Else
        Response.Write "Ei tietueita"
        End If


      • aspisti
        MRA kirjoitti:

        Ei tule minkäänlaista virheilmoitusta, vaan recordset-objekti ei palauta yhtään tulosta kun taas Accesissa tuloksia löytyy.

        Homma toimii tähän tapaan:

        Set rec = Server.CreateObject("ADODB.Recordset")

        rec.Open sqllauseke, dsnyhteys

        If Not (rec.BOF And rec.EOF) Then
        'koodia
        Else
        Response.Write "Ei tietueita"
        End If

        Moikka

        Tarkasta, missä järjestyksessä muodostat ja availet yhteyden, recorsetin ja missä laitat sql-kyselyn sekä sql-lauseen syntaksi. jos noi ovat varmasti oikein niin sitten mietis mitä toi If lause tarkoittaa

        If Not (rec.BOF And rec.EOF)
        Jos ei ole(rec.alussa ja rec.lopussa)

        Voivatko molemmat ehdot täyttyä jos tietueita löytyy???

        En tiedä mitä oikein olet tekemässä, mutta
        muuttaisin If;iä sillai että ensimmäinen ehto pois, eli laittaisin näin

        If Not rec.EOF then


      • MRA
        aspisti kirjoitti:

        Moikka

        Tarkasta, missä järjestyksessä muodostat ja availet yhteyden, recorsetin ja missä laitat sql-kyselyn sekä sql-lauseen syntaksi. jos noi ovat varmasti oikein niin sitten mietis mitä toi If lause tarkoittaa

        If Not (rec.BOF And rec.EOF)
        Jos ei ole(rec.alussa ja rec.lopussa)

        Voivatko molemmat ehdot täyttyä jos tietueita löytyy???

        En tiedä mitä oikein olet tekemässä, mutta
        muuttaisin If;iä sillai että ensimmäinen ehto pois, eli laittaisin näin

        If Not rec.EOF then

        If Not (rec.BOF And rec.EOF)

        tarkoittaa että kursori ei osoita tyhjään, eli tuloksia löytyy 1..N kappaletta, mutta asia ei liity tähän koska käytän tätä kontrollia aina ja se toimii. Sql-lauseke on oikein kuten aiemmin sanoin ja se toimii Accessissa. dsnyhteys -muuttuja on oikein muodostettu koska samaa muuttujaa käytän monessa muussa yhteyden luonnissa ja niissà se toimii. Siispä ihmeteltäväksi jää miksi kysely ei palauta tuloksia ADO:lla vaikka kaikki tuntuu olevan kondiksessa.


      • Ellit
        MRA kirjoitti:

        If Not (rec.BOF And rec.EOF)

        tarkoittaa että kursori ei osoita tyhjään, eli tuloksia löytyy 1..N kappaletta, mutta asia ei liity tähän koska käytän tätä kontrollia aina ja se toimii. Sql-lauseke on oikein kuten aiemmin sanoin ja se toimii Accessissa. dsnyhteys -muuttuja on oikein muodostettu koska samaa muuttujaa käytän monessa muussa yhteyden luonnissa ja niissà se toimii. Siispä ihmeteltäväksi jää miksi kysely ei palauta tuloksia ADO:lla vaikka kaikki tuntuu olevan kondiksessa.

        Kerro kuitenkin se SQL-lause. ADO ja ODBC asettavat tietyt SQL-asetukset kuten SET ANSINULL ON/OFF, näin ainakin SQL Serverillä. Erityisesti kiinnostaa mitä on LIKE:n jälkeen, pitäisi olla jotakin näin:

        SELECT * FROM Customer WHERE FirstName LIKE 'Elli%'

        -lainausmerkit eivät välttämättä kelpaa (riippuu asetuksista), käytä heittomerkkejä
        -Huomaa % lopussa, driver / ADO saattaa täyttää kentän välilyönneillä, eli ilman prosenttia näin:
        ... LIKE 'Elli ' ja sitten pitää tietty olla oikea määrä välilyöntejä.


      • Ellit
        Ellit kirjoitti:

        Kerro kuitenkin se SQL-lause. ADO ja ODBC asettavat tietyt SQL-asetukset kuten SET ANSINULL ON/OFF, näin ainakin SQL Serverillä. Erityisesti kiinnostaa mitä on LIKE:n jälkeen, pitäisi olla jotakin näin:

        SELECT * FROM Customer WHERE FirstName LIKE 'Elli%'

        -lainausmerkit eivät välttämättä kelpaa (riippuu asetuksista), käytä heittomerkkejä
        -Huomaa % lopussa, driver / ADO saattaa täyttää kentän välilyönneillä, eli ilman prosenttia näin:
        ... LIKE 'Elli ' ja sitten pitää tietty olla oikea määrä välilyöntejä.

        Niin tuossa jälkimmäisessä stringissä eivät näy loppuun laittamani apaut 40 välilyntiä:

        ... LIKE 'Elli______________________________'


      • MRA
        Ellit kirjoitti:

        Kerro kuitenkin se SQL-lause. ADO ja ODBC asettavat tietyt SQL-asetukset kuten SET ANSINULL ON/OFF, näin ainakin SQL Serverillä. Erityisesti kiinnostaa mitä on LIKE:n jälkeen, pitäisi olla jotakin näin:

        SELECT * FROM Customer WHERE FirstName LIKE 'Elli%'

        -lainausmerkit eivät välttämättä kelpaa (riippuu asetuksista), käytä heittomerkkejä
        -Huomaa % lopussa, driver / ADO saattaa täyttää kentän välilyönneillä, eli ilman prosenttia näin:
        ... LIKE 'Elli ' ja sitten pitää tietty olla oikea määrä välilyöntejä.

        Homma toimii kiitos vaan avusta. Microsoft Jet-ajurilla kuitenkin käytetään %-merkkiä eikä *-merkkiä jolla Accessissa toimii Like-komento.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Mihin kaikkeen sinä ihastuit hänessä

      Mikä oli se asia mikä vei jalat altasi? ❤️ Oliko jotain erityistä tilannetta vai tunne? Kenties monen sattuman summa? Ai
      Ikävä
      116
      9899
    2. Persut: haluamme lisää veroja!

      Lisää lisää veroja huutaa persukuoro. Veroila Suomi nousuun! "Uusi matkailuvero eli matkailijamaksu peritään esimerki
      Maailman menoa
      77
      5002
    3. Nainen kokki autossa kammottavan kuoleman sähköauto-Teslan syttyessä tuleen.

      https://www.is.fi/autot/art-2000011652873.html Näin vaarallisia sähköautopalot voivat olla.
      Maailman menoa
      69
      4812
    4. Persuja ei aluevaltuustoissa näy

      Ei tunnu persuja paljon paikalliset asiat kiinnostavan, vaan ainoastaan ulkomaalaiset, joku Israel ja Trumpin fanitus.
      Maailman menoa
      7
      3280
    5. Päivän Riikka: Uudenkaupungin autotehdas hiljeni

      Näin ne 100 000 uutta pysyvää ei-tempputyötä yksityiselle sektorille tämän hallituksen ansiosta syntyy. Työntekijöille j
      Maailman menoa
      10
      2478
    6. Numero josta kaivattusi tulee mieleen

      Onko jokin numero joka yhdistää teidät jotenkin? Älä laita puhelinnumeroa.
      Ikävä
      107
      1720
    7. Miksi pitäisit enemmän

      Minusta kuin siitä toisesta?
      Ikävä
      47
      1516
    8. Kerro kaivattusi nimi tai nimikirjaimet

      🌠 Tähdenlento! Kirjoittamalla kaivattusi nimen tai nimikirjaimet tähän, saattaa toiveesi toteutua.
      Ikävä
      54
      1511
    9. Jorman paluu sodasta Lieksaan oli katkera

      Jorma Karhunen astui Lieksan asemalle. Aurinko paistoi, mutta Jorman maailma oli sumuinen. Takana oli se helvetti, jota
      Lieksa
      59
      1444
    10. Heräsin taas sinä mielessä

      Miten voi haluta toista näin paljon? 😳 Kyllä meillä on muutenkin hyvä yhteys. Ehkä se tekee myös tästä niin voimakkaan?
      Ikävä
      66
      1372
    Aihe