Avatar billede -xyz- Nybegynder
05. april 2006 - 16:27 Der er 34 kommentarer og
1 løsning

SQL Problem

Ja, jeg har et lille problem med SQL når jeg kører:
dette script:
SELECT * FROM Ingrediens WHILE Ingrediensen LIKE 'tomat';
Så får jeg en OleDBException, men ikke når jeg kører dette script:
SELECT * FROM Ingrediens;
Og det aller mærkeligste at scriptet kører fint inde fra access

Håber i kan hjælpe
Kenneth
Avatar billede ladyhawke Novice
05. april 2006 - 16:31 #1
Mangler du ikke noget, eller måske en fomuleringsfejl?

SELECT * FROM Ingrediens WHILE Ingrediensen LIKE '%tomat%'; (hvor ordet tomat indgår)
eller
SELECT * FROM Ingrediens WHILE Ingrediensen = 'tomat';
Avatar billede ladyhawke Novice
05. april 2006 - 16:33 #2
Avatar billede ladyhawke Novice
05. april 2006 - 16:34 #3
alternativt: hvor er det lige du kører det første script, som virker direkte i Access?
Avatar billede -xyz- Nybegynder
05. april 2006 - 16:36 #4
samme sted som det andet
Og jeg har prøvet beggeforslag, og intet virker
Avatar billede ladyhawke Novice
05. april 2006 - 16:42 #5
WHILE -> WHERE?
Avatar billede ffsoft Praktikant
05. april 2006 - 16:43 #6
Jeg har aldrig hørt om WHILE i en SQL sætning, mener
du ikke WHERE
Avatar billede Slettet bruger
05. april 2006 - 16:43 #7
og hvis du bruger Where istedet ??
Avatar billede Slettet bruger
05. april 2006 - 16:45 #8
:)
Avatar billede -xyz- Nybegynder
05. april 2006 - 16:46 #9
Jeg mener selvfølgelig WHERE bruger bare for meget tid på programmering
Avatar billede ladyhawke Novice
05. april 2006 - 16:47 #10
10 sekunder hurtigere ;)
Avatar billede ladyhawke Novice
05. april 2006 - 16:47 #11
Vil det sige at du har husket at benytte WHERE i din sql, eller hvordan skal det forstås?
Avatar billede ffsoft Praktikant
05. april 2006 - 16:49 #12
ladyhawke slog mig med 10 sek. :0)
Avatar billede Slettet bruger
05. april 2006 - 16:50 #13
SELECT * FROM Ingrediens WHERE Ingrediensen LIKE "*tomat*"
Avatar billede -xyz- Nybegynder
05. april 2006 - 16:52 #14
Ja, det vil det sige
Paster lige koden:

public string[] GetIngrediens(string prefix, int maxResults) {
        string[] items = new string[maxResults];

        OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data Source=" + Server.MapPath("App_Data/ShoppingAssistant.mdb"));

        OleDbCommand cmd = new OleDbCommand("SELECT * FROM Ingrediens WHERE Ingrediensen LIKE 'Tomat%';");
        cmd.Connection = conn;
        conn.Open();
       
        OleDbDataReader reader = cmd.ExecuteReader();
       
        int i = 0;
        while (reader.Read()){
            if (i >= maxResults)
                break;
            items[i] = reader.GetString(0);
            i++;
        }
        conn.Close();
        string[] itemsTrimmed = new string[i];
        for (int c = 0; c < i; c++)
        {
            itemsTrimmed[c] = items[c];
        }
        return itemsTrimmed;
    }
Avatar billede -xyz- Nybegynder
05. april 2006 - 16:53 #15
hvis det hjælper på bare se væk fra koden, den virker
Avatar billede ladyhawke Novice
05. april 2006 - 16:54 #16
Har du prøvet at udskrive indholdet af den exception du får? (message hedder den i C#)
Avatar billede -xyz- Nybegynder
05. april 2006 - 16:56 #17
ja, det gør den automatisk, jeg får den meget beskrivende fejl:
Der er ikke angivet nogen værdi for en eller flere krævede parametre.
Avatar billede Slettet bruger
05. april 2006 - 16:59 #18
kender ikke til C#
men * som alias virker på min access db, % gør ikke
Avatar billede -xyz- Nybegynder
05. april 2006 - 17:01 #19
Ja, i Access virker * men når man bruger Jet SQL, skal man bruge % som wildcard
Avatar billede ladyhawke Novice
05. april 2006 - 17:04 #20
Nu koder jeg ikke lige VB normalt, men det lyder til at du mangler at angive en parameter på et metodekald et eller andet sted, hvilken af linierne trigger den?
Avatar billede -xyz- Nybegynder
05. april 2006 - 17:06 #21
Denne: OleDbDataReader reader = cmd.ExecuteReader();

Og det er ikke VB, Men C# ;)
Avatar billede -xyz- Nybegynder
05. april 2006 - 17:07 #22
Men readeren betyder oftest en fejl i sql kaldet
Avatar billede -xyz- Nybegynder
05. april 2006 - 17:09 #23
Virker bare mærkeligt at ´det virker med en simpel SELECT der henter alle poster
Avatar billede Slettet bruger
05. april 2006 - 17:16 #24
så må det jo være noget galt med din WHERE sætning

kan du debugge og se hvad den returnere
Avatar billede -xyz- Nybegynder
05. april 2006 - 17:17 #25
Nej, det er en webservice
Avatar billede Slettet bruger
05. april 2006 - 17:20 #26
hvilke data har du i ingredienser

står der eks. 2 tomater, eller har du enheden i en anden kolonne

hvis det første er tilfældet skal du også have alias foran ( "%Tomat%" )
Avatar billede -xyz- Nybegynder
05. april 2006 - 17:23 #27
Der står rent faktisk kun Tomat, men jeg får jo heller ikke en exception hvis den ikke finder nogen resultater
Avatar billede Slettet bruger
05. april 2006 - 17:29 #28
Måske du skal søge hjælp i C# kategorien
der er måske noget i dit "Kald" der ikke er rigtigt
Avatar billede -xyz- Nybegynder
05. april 2006 - 17:30 #29
Jeg får denne ErrorCode, hvis det hjælper: -2147217904
Avatar billede -xyz- Nybegynder
05. april 2006 - 17:34 #30
det er rigtigt nok, for det er Access der melder fejl, ellers havde det ikke stået på dansk. og den smider også en fejlkode tilbage
Avatar billede -xyz- Nybegynder
05. april 2006 - 17:39 #31
Jeg fandt fejlen, jeg refererede til en kolonne der ikke eksisterede.
Avatar billede Slettet bruger
05. april 2006 - 17:39 #32
HAHA
Avatar billede -xyz- Nybegynder
05. april 2006 - 17:44 #33
Smid svar hvis i vil have points
Avatar billede Slettet bruger
05. april 2006 - 17:45 #34
tag dem bare selv
Avatar billede ladyhawke Novice
05. april 2006 - 19:16 #35
enig
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester