我是编程新手,所以不要太严厉。
情况是这样的:
我想从 Access 数据库获取值并将其返回到 Visual Basic 中的文本框。我尝试了这些代码,但问题是,它总是只返回第一行中的数据。我想从 ID = 4 获取数据。这是我的代码:
Private Sub cmdshow_Click()
strsql1 = "select * from Table1 where ID = '4' "
With RS
txtstudent.Text = !Student
txtage.Text = !Age
End With
End Sub
access数据库是这样的:
http://postimg.org/image/mrtcmsc3b/
我知道我的代码是错误的。我唯一知道的是我必须从数据库返回值并将其分配给变量并将其放置在文本框中。我知道程序是如何运行的,但我不知道可以工作的正确代码。
我们将非常感谢您的回复。谢谢你。
除非您省略了一些代码,否则您显示的代码实际上并没有执行任何操作来获取记录集。您正在将查询分配给变量,但您没有使用该变量。例如,您实际上在哪里打开记录集? ADO 记录集 Open 语句的语法为: recordset.Open Source, ActiveConnection, CursorType, LockType, Options
Source 是一个可选参数,在您的情况下将是您的 SQL 语句,因此您的方法应该看起来更多就像下面这样。
Private Sub cmdshow_Click()
strsql1 = "select * from Table1 where ID = 4"
RS.Open strsql1
With RS
txtstudent.Text = !Student
txtage.Text = !Age
End With
End Sub
您可以在此处阅读完整文档,打开方法(ADO 记录集)。另外你自己的SQL语句也有错误。您用单引号将 4 括起来,表示它是一个字符串,在表格的屏幕截图中它似乎是数字。并牢记戈德·汤普森的建议。
Option Explicit
语句要求您声明所有变量,从而为您省去许多麻烦。如果您还没有这样做,请转到 Tools |选项菜单和编辑器选项卡上确保选中需要变量声明。
您已要求程序选择 ID 为 4 的记录。 然后您要做的就是查看该集中的第一条记录。 假设您知道数据库中 ID 为 4 的记录限制为 5 条。 然后在表单上创建 5 个姓名文本框和 5 个年龄文本框。
在针对学生及其年龄的编码中:
reccount = RS.recordcount
for I = 1 to reccount
txtstudent(I) = RS!student
txtage(I) = RS!age
rs.movenext
next
如果您只想一次显示一个,则只需添加两个框和一个名为“下一步”(或您选择的任何内容)的命令按钮,然后逐步浏览学生数据。 既然您知道必须做什么才能向您选择的学生展示,我将让您利用您与生俱来的编程能力来解决这个问题。
或者 - 只需添加一个足够大的文本框(将 MultiLine 设置为 true)并使用如下代码添加所有学生/年龄:
for I = 1 to reccount
textbox = textbox & RS!Student & " " & RS!age & VBCrLf 'carriage return/line feed
RS.movenext
next