2013-10-27 6 views
-1

Я получаю ту же ошибку при попытке получить информацию из базы данных доступа MS. Ниже мое кодирование.Ошибка синтаксиса в запросе в базе данных Access из Delphi

var  
iTemp, iX, iY, k : Integer; 
sDate : String; 

begin 

    iTemp := 0; 
    DB.Close; 
    DB.SQL.Add('SELECT Count(UserID) AS Total FROM tblResults;'); 
    DB.Parameters.ParamByName('ID').Value := pID; 
    DB.ExecSQL; 
    DB.Open; 

    iTemp := DB.FieldByName('Total').AsInteger; 

    if iTemp = 0 then 
    ShowMessage('Sorry but we do not have any test results for you. Take a test and check your result !') 
    else 
    Begin 

    DB.Close; 
    DB.SQL.Add('SELECT Mark,DateTested AS Total FROM tblResults WHERE UserID=:ID;'); 
    DB.Parameters.ParamByName('ID').Value := pID; 
    DB.ExecSQL; 
    DB.Open; 

    for k := 1 to iTemp do 
    Begin 

    iX := k; 
    iY := DB.FieldByName('Mark').AsInteger; 
    sDate := DB.FieldByName('DateTested').AsString; 

    Chart1.Series[0].AddXY(iX,iY,sDate,clTeeColor); 

    DB.Next; 

    End; 

    Db.Close; 
    End; 

Ошибка

Синтаксис errpr. в выражении запроса «Имя пользователя =" SELECT COUNT (UserID) AS Всего с tblResults'

Я действительно не undertand этой ошибки. Пожалуйста, помогите мне получить эту вещь работать.

+0

Вам не нужно делать «DB.SQL.Clear;» перед тем, как вы попробуете «DB.SQL.Add» второй запрос? –

ответ

0

Я не знаю Delphi (только MS Access), но одна вещь в вашем коде все еще выглядит странной:

Ваше сообщение об ошибке говорит о том, что происходит ошибка «в выражении запроса«Имя пользователя =»[the SQL string from your code]

Вы прошли строку SQL к вашему. запрос с помощью этого кода:

DB.SQL.Add('SELECT Count(UserID) AS Total FROM tblResults;'); 

Как вы используете DB.SQL.Add('...') (а не что-то вроде DB.SQL = '...'), я подозреваю, что, возможно, DB.SQL уже есть что-то в начале вашего кода.

Где еще должна быть часть 'Username=?

+0

По какой-то причине это сработало: D –

+0

@BenedictFerguson Итак, что вы изменили в своем коде? –

+0

Я просто добавил DB.SQL.Clear, прежде чем я добавил фактический запрос. –

Смежные вопросы