2013-01-04 32 views
0

这是一个完整的新手问题,但我在网上找不到任何解决方案(至少没有任何理解)。我想用一个文本框和一个按钮来创建一个表单,点击按钮时应该将该值写入文本框,在表中找到具有该ID的行并将属性更改为unavailable。通常我会用一个简单的SQL语句做到这一点:微软Access:如何获得按钮点击文本框的价值?

UPDATE table SET available='NO' WHERE id = *textbox.value*; 

我应该写的,而不是textbox.value使其作品是什么?

回答

1

你可以参考一个开放的形式:

UPDATE table SET available='NO' WHERE id = Forms!MyForm!MyTextbox 

假设形式是主要形式,而不是一个子窗体。您还可以在VBA中运行SQL。确保您不会通过表单和查询或代码同时更新记录。

再评论

在这种情况下,问题是腐败,这是我常常忘了提防。你会在这里找到一篇好文章:http://www.granite.ab.ca/access/corruptmdbs.htm,包括反编译。

+0

每当我运行查询它会打开一个对话框,要求形式的价值Gestiune idInchiriere!。由于没有错别字,可能是什么问题? 我有编程经验,但没有在Visual Basic中,我看过一些代码,但我很难过...... – FloIancu

+0

如果您使用的是MS Access 2010,则可以在查询设计窗口中使用intellisense来获取名称Access具有表单和控件,否则,可以使用表达式向导。如果您完全确信名称没有问题,您是否可以从引用Forms!Gestiune!idInchiriere的开放表单运行消息框进行测试? – Fionnuala

+0

此外,为了重申Remou所说的话,请仔细检查您的表单是否在运行查询时打开。听起来它可能没有打开,或者你错误地拼写了控件。 – Scotch

1

从文本框中获取的值是即使简单:

  • 从VBA执行查询
  • 的VBA是在同一形式的文本框中

如果我理解这个问题是正确的,这里就是这种情况。

然后,你可以这样做:

Dim SQL As String 

'case 1: when the id is a string value 
SQL = "UPDATE table SET available='NO' WHERE id = '" & Me.NameOfTheTextBox & "';" 

'case 2: when the id is a numeric value 
SQL = "UPDATE table SET available='NO' WHERE id = " & Me.NameOfTheTextBox & ";" 

CurrentDB.Execute SQL 
相关问题