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

1107

    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. Korjaa toki jos...

      Koet että ymmärsin sinut kuitenkin aivan väärin. Jännittäminen on täyttä puppua kun et muitakaan miehiä näköjään jännitä
      Ikävä
      29
      2875
    2. Mitä aiot sanoa, kun ja jos tapaatte seuraavan kerran?

      Oletko päättänyt etukäteen?
      Ikävä
      117
      1170
    3. Koetko sä mitään

      Syyllisyyden tunteita siitä mitä teit mulle?
      Ikävä
      58
      941
    4. Ellen Jokikunnas paljasti somessa ison perheuutisen - Ralph-poika elämänmuutoksen edessä!

      Ellen Jokikunnas ja Jari Rask sekä Ralph-poika ovat uuden edessä. Tsemppiä koko perheelle ja erityisesti Ralphille! Lu
      Suomalaiset julkkikset
      6
      907
    5. Mies muistatko kun näit

      Mut ensimmäisen kerran? Missä se oli? Hyvää yötä.
      Ikävä
      66
      895
    6. olet kaiken rakkauden arvoinen

      Olisinpa kertonut kuinka rakastuin sinuun. Kuinka hyvältä tunnuit siinä lähelläni, kunpa en olisi väistänyt vastapäätyy
      Ikävä
      26
      867
    7. Mikä koirarotu muistuttaa kaivattuasi eniten?

      Koirien piirteet muistuttavat usein ihmisten ja omistajiensa piirteitä.
      Ikävä
      65
      824
    8. Olisi kiva

      Tietää, mitä oikein ajattelet minusta tai meistä? Mitä meidän välillä on? Salattua tykkäämistä, halua, himoa? Onhan tämä
      Ikävä
      37
      820
    9. Nainen, jos kuuntelet ja tottelet, niin sinulle on hyvä osa

      Ominpäin toimiessasi olet jo nähnyt mihin se on johtanut. Olen jo edeltä sen sinulle kertonut ja näen sen asian ja totuu
      Ikävä
      143
      770
    10. Oot mun koko maailma

      Ei ole koskaan ollut ketään, joka olisi niin täydellinen minulle kuin sinä mies ❤️ Ikävöin sua🥹
      Ikävä
      75
      754
    Aihe