in reply to Re^3: SQL error
in thread SQL error

I bleive that is going to work thank you. But what is the reasoning for putting the q and the brackets.

Replies are listed 'Best First'.
Re^5: SQL error
by Jenda (Abbot) on Aug 13, 2004 at 14:28 UTC

    The q{} is irrelevant. The important change was the "FAIL" to 'FAIL'. I could have written it as

    $stg = $dbh->prepare( 'SELECT REFERENCE, REQUIREMENT FROM TestCasesOutput WHERE PassFail = + \'FAIL\'' );
    or
    $stg = $dbh->prepare( "SELECT REFERENCE, REQUIREMENT FROM TestCasesOutput WHERE PassFail = + 'FAIL'" );

    The problem was that only single quotes should be used to denote string literals in SQL. "Some Name" may be either a string or the name of a column or other object. Which is it depends on the database and its settings, but the later meaning is much more likely.

    I believe you got the misleading error message because Access tries to be helpfull and treats unknown column names as "query parameters". If you would run that query from within Access you'd get a popup dialog asking you to enter the value of "FAIL".

    Jenda
    Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.
       -- Rick Osborne

Re^5: SQL error
by TrekNoid (Pilgrim) on Aug 13, 2004 at 15:17 UTC
    q{} treats the entire set of characters between the braces as single quoted. It's handy to use it for SQL because it removes the issue of getting confused and not closing all your quote marks in your SQL commands.

    So:

    q{This is a string} 'This is a string'
    are essentially the same thing.

    qq{}, incidentally, works the same way, only with double quotes

    Trek