2014-09-26 173 views
0

嗨我忙於一個學校的項目,並想知道我無法工作的東西。SQL更新聲明(語法)錯誤

我有一個名爲Users的表的數據庫和一個名爲Animals的數據庫,它們與關係鏈接。在Animal表中有一個名爲UserID的列,並且它鏈接到用戶的名稱。我想要做的是讓用戶有能力採用尚未被採用的動物。在他們可以採用的頁面上是與動物表相關的dbedits,它們顯示一個動物的所有信息,當您使用dbnavigator時,您將轉到下一個動物等。DBedits顯示指定動物的列值。一個dbedit顯示動物是否被採納,當你點擊它旁邊的採納按鈕時,它表示動物是否被採納,如果不是,你可以採用它。當它不被採用時,用戶可以將他的名字放在一個InputBox中,並且這個名字我想放在動物表中,它表​​示用戶ID,因爲如果你查看用戶表,在用戶旁邊有一個「+」圖標,當你點擊採用動物的用戶的「+」圖標時,它應該顯示相關動物的信息。在採納按鈕後面,我通過輸入框獲取用戶名,並將其放入一個名爲username的變量中,並將動物名稱與其中一個dbedits相關聯,並將其放入名爲nameofanimal的變量中。然後,我想將動物表中的用戶標識更改爲用戶的名稱,其中動物的名稱= nameofanimal,但它不起作用。我使用ADOQRY,這裏是我使用的SQL更新代碼,

qryDBV.sql.Text := 'UPDATE Animals SET Adopted = Yes AND UserID = '''+username+''' WHERE (('''+nameofanimal+'''[Adopted] = false)'; 
    qryDBV.ExecSQL; 
    qryDBV.Active := false; 
    qryDBV.sql.Text := 'SELECT * FROM Animals'; 
    qryDBV.Active := true; 
    end; 
+0

當您遠離報價條款'和'是'使用where'條款和'YES'是需要被引號包圍。 – 2014-09-26 11:05:17

回答

0

更改您的第一行用這個.. 並在where子句中只有... 因此,代碼會是這樣使用..

qryDBV.sql.Text := 'UPDATE Animals SET Adopted = Yes , UserID = '''+username+''' WHERE (('''+nameofanimal+'''[Adopted] = false)'; 
+0

我仍然得到相同的錯誤信息,delphi強調了這一行,qryDBV.Active:= false; – Jano 2014-09-26 11:31:34

0
  1. 始終把引號的字符串。
  2. 不要使用,並在您SET子句,但在其中,如果需要
  3. 需要

qryDBV.sql.Text := 'UPDATE Animals SET Adopted = 'Yes', UserID = \''+username+'\' WHERE (\''+nameofanimal+'\'[Adopted] = false)';