2016-09-22 72 views
-1

我正在學校的PAT上工作,請你幫我解決我的代碼問題。「insert into statement」中的語法錯誤

這是我第一個

DMrecord.qryMembers.Paramcheck := true; 
DMrecord.qryMembers.SQL.Text := 'INSERT INTO Members ' 
      +'([MemberName],[MemberSurname],[Age],[CellNumber],[EmailAddress])' 
      +' VALUES ' 
      +'(:MemberName, :MemberSurname, :Age, :CellNumber,:EmailAddress)'; 
      DMrecord.qryMembers.Parameters.ParamByName('MemberName').Value := sname; 
      DMrecord.qryMembers.Parameters.ParamByName('MemberSurname').Value := ssurname; 
      DMrecord.qryMembers.Parameters.ParamByName('Age').Value := iage; 
      DMrecord.qryMembers.Parameters.ParamByName('CellNumber').Value := icellphone; 
      DMrecord.qryMembers.Parameters.ParamByName('EmailAddress').Value := semail; 
      DMrecord.qryMembers.ExecSQL; 

這是我的第二個

DMrecord.qryResults.Paramcheck := true; 
DMrecord.qryResults.SQL.Text := 'INSERT INTO Member Result ' 
      +'([ClubNumber],[Event],[AverageTime/Distance],[Numberofcompetition],[Agegroup])' 
      +' VALUES ' 
      +'(:ClubNumber, :Event, :AverageTimeDistance, :Numberofcompetition, :Agegroup)'; 
      DMrecord.qryResults.Parameters.ParamByName('ClubNumber').Value := iclubnumber; 
      DMrecord.qryResults.Parameters.ParamByName('Event').Value := sevent; 
      DMrecord.qryResults.Parameters.ParamByName('AverageTimeDistance').Value := ravg; 
      DMrecord.qryResults.Parameters.ParamByName('Numberofcompetition').Value := inumcomps; 
      DMrecord.qryResults.Parameters.ParamByName('Agegroup').Value := sagegroup; 
      DMrecord.qryResults.ExecSQL; 

我希望這使得它更容易 並感謝幫助

+0

給空間後前'values' – Sankar

+1

您的修改已回滾(約第二@kobik打我吧)。如果您有新問題,請創建一個**新問題**並在那裏詢問。您可以**在您收到原始問題的答案後,不要**將問題編輯爲新問題;它使這些答案無效,並使海報顯得愚蠢,並可能導致他們獲得低價。 **如果您再次更改此問題,我會將其標記爲主持人的注意,因爲您違反了本網站的規則。** –

回答

4

在你的第二個查詢,你使用

'INSERT INTO Member Result ' 

這將導致錯誤,因爲表名包含空格且不會被轉義。你需要用它在括號:

'INSERT INTO [Member Result] ' 
+2

我不認爲這些空間是強制性的。但是[成員結果]是正確的。 +1 – kobik

+0

@kobik你是對的 - 只是測試過,並沒有拋出錯誤。我一直認爲它是。謝謝,我會更新答案。 – Siyual

+0

會有一個原因,爲什麼我的代碼不會在數據庫本身進行更改? – Heinie