VB实现ACCESS数据库记录的查询,新增,删除,修改,保存
我采用的是ADO和datagrid1控件,已有字段:字段1(DTPicker1)字段2(text)------------字段11(text)字段12(DTPicker1...
我采用的是ADO和datagrid1控件,已有字段:
字段1(DTPicker1)
字段2(text)
------
------
字段11(text)
字段12(DTPicker1)
------
字段18(text)
各位大吓可以帮我写下代码发我邮箱吗?twtydn@163.com,谢谢! 展开
字段1(DTPicker1)
字段2(text)
------
------
字段11(text)
字段12(DTPicker1)
------
字段18(text)
各位大吓可以帮我写下代码发我邮箱吗?twtydn@163.com,谢谢! 展开
展开全部
VB实现ACCESS数据库记录的查询,新增,删除,修改
在“创建”选项卡上的“其他”组中,单击“查询设计”。
在“显示表”对话框中,单击“查询”选项卡,然后双击“产品订单数”。
关闭“显示表”对话框。
双击“产品 ID”字段和“订单日期”字段,以将这些字段添加到查询设计网格。
在该网格的“产品 ID”列的“排序”行中,选择“升序”。
在该网格的“订单日期”列的“排序”行中,选择“降序”。
在该网格的第三列中,右键单击“字段”行,然后单击快捷菜单上的“显示比例”。
在“显示比例”对话框中,键入或粘贴以下表达式:
Prior Date: (SELECT MAX([Order Date])
FROM [Product Orders] AS [Old Orders]
WHERE [Old Orders].[Order Date]
< [Product Orders].[Order Date]
AND [Old Orders].[Product ID]
= [Product Orders].[Product ID])
此表达式是子查询。对于每一行,该子查询都会选择略早于已经与此行建立联系的订单日期的最近的订单日期。请注意如何使用 AS 关键字创建表别名,以便将子查询中的值与主查询的当前行中的值进行比较。
在该网格的第四列的“字段”行中,键入以下表达式:
Interval: [Order Date]-[Prior Date]此表达式使用通过子查询定义的前一个日期的值计算该产品的每个订单日期与前一个订单日期之间的时间间隔。
在“设计”选项卡上的“结果”组中,单击“运行”。
该查询将运行,并显示一个列表,列表中包含产品名称、订单日期、前一个订单日期以及订单日期之间的时间间隔。结果先按照“产品 ID”(升序)、再按照“订单日期”(降序)进行排序。
注释 因为“产品 ID”在默认情况下是查阅字段,所以 Access 会显示查阅值(在这种情况下是产品名称)而不是实际的“产品 ID”。尽管这样会更改显示的值,但不会更改排序顺序。
关闭罗斯文数据库。
返回页首
将子查询用作查询字段的条件
可以将子查询用作字段条件 (条件:所指定的限制查询或筛选的结果集中包含哪些记录的条件。)。如果要使用子查询的结果限制字段所显示的值,则可以将子查询用作字段条件。
例如,假设您要查看由非销售代表员工处理的订单列表。要生成此列表,需要将每个订单的员工 ID 与非销售代表员工的员工 ID 列表进行比较。要创建此列表并将其用作字段条件,可以使用子查询,如下面的步骤所示:
打开 Northwind 2007.accdb 并启用其内容。
关闭登录窗体。
在“创建”选项卡上的“其他”组中,单击“查询设计”。
在“显示表”对话框的“表”选项卡上,双击“订单”和“员工”。
关闭“显示表”对话框。
在“订单”表中,双击“员工 ID”字段、“订单 ID”字段和“订单日期”字段,以将其添加到查询设计网格中。在“员工”表中,双击“职务”字段以将其添加到设计网格。
右键单击“员工 ID”列的“条件”行,然后单击快捷菜单上的“显示比例”。
在“显示比例”框中,键入或粘贴以下表达式:
IN (SELECT [ID] FROM [Employees]
WHERE [Job Title]<>'Sales Representative')
这是子查询。它选择其职务不是销售代表的员工的员工 ID,并且将结果集提供给主查询。主查询随后会检查“订单”表中的员工 ID 是否在该结果集中。
在“设计”选项卡上的“结果”组中,单击“运行”。
该查询将运行,并且查询结果显示由非销售代表员工处理的订单列表。
返回页首
可在子查询中使用的常见 SQL 关键字
在子查询中可以使用的几个 SQL 关键字为:
注释 此列表并不详尽。您可以在子查询中使用任何有效的 SQL 关键字,数据定义关键字除外。
ALL 在 WHERE 子句中使用 ALL,可以检索在与子查询返回的每个行进行比较时满足条件的行。
例如,假设您要分析一所大学中的学生数据。学生必须维持最低 GPA,它随着专业的不同而不同。“专业”和“最低 GPA”存储在名为 Majors 的表中,相关的学生信息存储在名为 Student_Records 的表中。
要查看相应专业中的每个学生都超过了最低 GPA 的专业(及其最低 GPA)的列表,可以使用以下查询:
SELECT [Major], [Min_GPA]
FROM [Majors]
WHERE [Min_GPA] < ALL
(SELECT [GPA] FROM [Student_Records]
WHERE [Student_Records].[Major]=[Majors].[Major]);
ANY 在 WHERE 子句中使用 ANY,可以检索在与子查询返回的至少一行进行比较时满足条件的行。
例如,假设您要分析一所大学中的学生数据。学生必须维持最低 GPA,它随着专业的不同而不同。“专业”和“最低 GPA”存储在名为 Majors 的表中,相关的学生信息存储在名为 Student_Records 的表中。
要查看相应专业中的任何学生都未达到最低 GPA 的专业(及其最低 GPA)的列表,可以使用以下查询:
SELECT [Major], [Min_GPA]
FROM [Majors]
WHERE [Min_GPA] > ANY
(SELECT [GPA] FROM [Student_Records]
WHERE [Student_Records].[Major]=[Majors].[Major]); 注释 您还可以使用 SOME 关键字达到同样的目的;SOME 关键字与 ANY 关键字意义相同。
EXISTS 在 WHERE 子句中使用 EXISTS 可以指示子查询至少应该返回一行。您还可以添加 NOT 作为 EXISTS 的前缀,以指示子查询不应该返回任何行。
例如,以下查询返回在至少一个现有订单中存在的产品的列表:
SELECT *
FROM [Products]
WHERE EXISTS
(SELECT * FROM [Order Details]
WHERE [Order Details].[Product ID]=[Products].[ID]);
如果使用 NOT EXISTS,则该查询返回在现有所有订单中都不存在的产品的列表:
SELECT *
FROM [Products]
WHERE NOT EXISTS
(SELECT * FROM [Order Details]
WHERE [Order Details].[Product ID]=[Products].[ID]);
IN 在 WHERE 子句中使用 IN 可以验证主查询的当前行中的某个值是子查询返回的结果集的一部分。您还可以添加 NOT 作为 IN 的前缀,以验证主查询的当前行中的某个值不是子查询返回的结果集的一部分。
例如,以下查询返回由非销售代表员工处理的订单(以及订单日期)的列表:
SELECT [Order ID], [Order Date]
FROM [Orders]
WHERE [Employee ID] IN
(SELECT [ID] FROM [Employees]
WHERE [Job Title]<>'Sales Representative');
通过使用 NOT IN,可以按照以下方式编写同一查询:
SELECT [Order ID], [Order Date]
FROM [Orders]
WHERE [Employee ID] NOT IN
(SELECT [ID] FROM [Employees]
WHERE [Job Title]='Sales Representative');
在“创建”选项卡上的“其他”组中,单击“查询设计”。
在“显示表”对话框中,单击“查询”选项卡,然后双击“产品订单数”。
关闭“显示表”对话框。
双击“产品 ID”字段和“订单日期”字段,以将这些字段添加到查询设计网格。
在该网格的“产品 ID”列的“排序”行中,选择“升序”。
在该网格的“订单日期”列的“排序”行中,选择“降序”。
在该网格的第三列中,右键单击“字段”行,然后单击快捷菜单上的“显示比例”。
在“显示比例”对话框中,键入或粘贴以下表达式:
Prior Date: (SELECT MAX([Order Date])
FROM [Product Orders] AS [Old Orders]
WHERE [Old Orders].[Order Date]
< [Product Orders].[Order Date]
AND [Old Orders].[Product ID]
= [Product Orders].[Product ID])
此表达式是子查询。对于每一行,该子查询都会选择略早于已经与此行建立联系的订单日期的最近的订单日期。请注意如何使用 AS 关键字创建表别名,以便将子查询中的值与主查询的当前行中的值进行比较。
在该网格的第四列的“字段”行中,键入以下表达式:
Interval: [Order Date]-[Prior Date]此表达式使用通过子查询定义的前一个日期的值计算该产品的每个订单日期与前一个订单日期之间的时间间隔。
在“设计”选项卡上的“结果”组中,单击“运行”。
该查询将运行,并显示一个列表,列表中包含产品名称、订单日期、前一个订单日期以及订单日期之间的时间间隔。结果先按照“产品 ID”(升序)、再按照“订单日期”(降序)进行排序。
注释 因为“产品 ID”在默认情况下是查阅字段,所以 Access 会显示查阅值(在这种情况下是产品名称)而不是实际的“产品 ID”。尽管这样会更改显示的值,但不会更改排序顺序。
关闭罗斯文数据库。
返回页首
将子查询用作查询字段的条件
可以将子查询用作字段条件 (条件:所指定的限制查询或筛选的结果集中包含哪些记录的条件。)。如果要使用子查询的结果限制字段所显示的值,则可以将子查询用作字段条件。
例如,假设您要查看由非销售代表员工处理的订单列表。要生成此列表,需要将每个订单的员工 ID 与非销售代表员工的员工 ID 列表进行比较。要创建此列表并将其用作字段条件,可以使用子查询,如下面的步骤所示:
打开 Northwind 2007.accdb 并启用其内容。
关闭登录窗体。
在“创建”选项卡上的“其他”组中,单击“查询设计”。
在“显示表”对话框的“表”选项卡上,双击“订单”和“员工”。
关闭“显示表”对话框。
在“订单”表中,双击“员工 ID”字段、“订单 ID”字段和“订单日期”字段,以将其添加到查询设计网格中。在“员工”表中,双击“职务”字段以将其添加到设计网格。
右键单击“员工 ID”列的“条件”行,然后单击快捷菜单上的“显示比例”。
在“显示比例”框中,键入或粘贴以下表达式:
IN (SELECT [ID] FROM [Employees]
WHERE [Job Title]<>'Sales Representative')
这是子查询。它选择其职务不是销售代表的员工的员工 ID,并且将结果集提供给主查询。主查询随后会检查“订单”表中的员工 ID 是否在该结果集中。
在“设计”选项卡上的“结果”组中,单击“运行”。
该查询将运行,并且查询结果显示由非销售代表员工处理的订单列表。
返回页首
可在子查询中使用的常见 SQL 关键字
在子查询中可以使用的几个 SQL 关键字为:
注释 此列表并不详尽。您可以在子查询中使用任何有效的 SQL 关键字,数据定义关键字除外。
ALL 在 WHERE 子句中使用 ALL,可以检索在与子查询返回的每个行进行比较时满足条件的行。
例如,假设您要分析一所大学中的学生数据。学生必须维持最低 GPA,它随着专业的不同而不同。“专业”和“最低 GPA”存储在名为 Majors 的表中,相关的学生信息存储在名为 Student_Records 的表中。
要查看相应专业中的每个学生都超过了最低 GPA 的专业(及其最低 GPA)的列表,可以使用以下查询:
SELECT [Major], [Min_GPA]
FROM [Majors]
WHERE [Min_GPA] < ALL
(SELECT [GPA] FROM [Student_Records]
WHERE [Student_Records].[Major]=[Majors].[Major]);
ANY 在 WHERE 子句中使用 ANY,可以检索在与子查询返回的至少一行进行比较时满足条件的行。
例如,假设您要分析一所大学中的学生数据。学生必须维持最低 GPA,它随着专业的不同而不同。“专业”和“最低 GPA”存储在名为 Majors 的表中,相关的学生信息存储在名为 Student_Records 的表中。
要查看相应专业中的任何学生都未达到最低 GPA 的专业(及其最低 GPA)的列表,可以使用以下查询:
SELECT [Major], [Min_GPA]
FROM [Majors]
WHERE [Min_GPA] > ANY
(SELECT [GPA] FROM [Student_Records]
WHERE [Student_Records].[Major]=[Majors].[Major]); 注释 您还可以使用 SOME 关键字达到同样的目的;SOME 关键字与 ANY 关键字意义相同。
EXISTS 在 WHERE 子句中使用 EXISTS 可以指示子查询至少应该返回一行。您还可以添加 NOT 作为 EXISTS 的前缀,以指示子查询不应该返回任何行。
例如,以下查询返回在至少一个现有订单中存在的产品的列表:
SELECT *
FROM [Products]
WHERE EXISTS
(SELECT * FROM [Order Details]
WHERE [Order Details].[Product ID]=[Products].[ID]);
如果使用 NOT EXISTS,则该查询返回在现有所有订单中都不存在的产品的列表:
SELECT *
FROM [Products]
WHERE NOT EXISTS
(SELECT * FROM [Order Details]
WHERE [Order Details].[Product ID]=[Products].[ID]);
IN 在 WHERE 子句中使用 IN 可以验证主查询的当前行中的某个值是子查询返回的结果集的一部分。您还可以添加 NOT 作为 IN 的前缀,以验证主查询的当前行中的某个值不是子查询返回的结果集的一部分。
例如,以下查询返回由非销售代表员工处理的订单(以及订单日期)的列表:
SELECT [Order ID], [Order Date]
FROM [Orders]
WHERE [Employee ID] IN
(SELECT [ID] FROM [Employees]
WHERE [Job Title]<>'Sales Representative');
通过使用 NOT IN,可以按照以下方式编写同一查询:
SELECT [Order ID], [Order Date]
FROM [Orders]
WHERE [Employee ID] NOT IN
(SELECT [ID] FROM [Employees]
WHERE [Job Title]='Sales Representative');
TableDI
2024-07-18 广告
2024-07-18 广告
VLOOKUP函数在Excel中主要用于垂直查找数据,但无法直接一次性匹配多行数据。若要实现这一功能,可以采取以下方法:1. 使用辅助列和数组公式,通过IF函数结合TE电商平台TJOIN函数将多个匹配值合并到一个单元格中。2. 利用VLOO...
点击进入详情页
本回答由TableDI提供
展开全部
“修改”按钮的程序
Private
Sub
cmdEdit_Click()
sql
=
"select
*
from
停时统计
where
date
=
cdate('"
&
Text8
.Text
&
"')
and
ycqk
=
'"
&
Combo1.Text
&
"'and
id
=
'"
&
DataGrid1.Columns(2).CellText(DataGrid1.Bookmark)
&
"'"
rs.Open
sql,
dm,
adOpenDynamic,
adLockOptimistic
rs.Fields("id")
=
Text7
.Text
rs.Fields("ycqk")
=
Combo1.Text
rs.Fields("date1")
=
Text1
.Text
rs.Fields("
time1
")
=
Text2
.Text
rs.Fields("date2")
=
Text3
.Text
rs.Fields("
time2
")
=
Text4
.Text
rs.Update
rs.Close
End
Sub
'“删除”按钮的程序
Private
Sub
cmdDelete_Click()
strFCode
=
DataGrid1.Columns(0).CellText(DataGrid1.Bookmark)
strSCode
=
DataGrid1.Columns(2).CellText(DataGrid1.Bookmark)
strCCode
=
DataGrid1.Columns(1).CellText(DataGrid1.Bookmark)
sql
=
"select
*
from
停时统计
where
date='"
&
strFCode
&
"'
and
id='"
&
strSCode
&
"'
and
ycqk='"
&
strCCode
&
"'"
rs.Open
sql,
dm,
adOpenDynamic,
adLockOptimistic
rs.Delete
rs.Update
rs.Close
End
Sub
'“增加”按钮的程序
Private
Sub
Command1_Click()
sql
=
"select
*
from
停时统计
order
by
id"
rs.Open
sql,
dm,
adOpenDynamic,
adLockOptimistic
rs.AddNew
rs.Fields("date")
=
Date
rs.Fields("id")
=
Text7.Text
-
1
rs.Fields("ycqk")
=
Combo1.Text
rs.Fields("date1")
=
Text1.Text
rs.Fields("time1")
=
Text2.Text
rs.Fields("date2")
=
Text3.Text
rs.Fields("time2")
=
Text4.Text
rs.Update
rs.Close
With
Adodc1
Adodc1.ConnectionString
=
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source="
&
App.Path
&
"\
db1
.mdb;Persist
Security
Info=False"
Adodc1.RecordSource
=
"select
*
from
停时统计
where
date
=
cdate('"
&
Text8.Text
&
"')
and
ycqk
=
'"
&
Combo1.Text
&
"'
order
by
id"
Adodc1.Refresh
DataGrid1.Refresh
End
With
End
Sub
Private
Sub
cmdEdit_Click()
sql
=
"select
*
from
停时统计
where
date
=
cdate('"
&
Text8
.Text
&
"')
and
ycqk
=
'"
&
Combo1.Text
&
"'and
id
=
'"
&
DataGrid1.Columns(2).CellText(DataGrid1.Bookmark)
&
"'"
rs.Open
sql,
dm,
adOpenDynamic,
adLockOptimistic
rs.Fields("id")
=
Text7
.Text
rs.Fields("ycqk")
=
Combo1.Text
rs.Fields("date1")
=
Text1
.Text
rs.Fields("
time1
")
=
Text2
.Text
rs.Fields("date2")
=
Text3
.Text
rs.Fields("
time2
")
=
Text4
.Text
rs.Update
rs.Close
End
Sub
'“删除”按钮的程序
Private
Sub
cmdDelete_Click()
strFCode
=
DataGrid1.Columns(0).CellText(DataGrid1.Bookmark)
strSCode
=
DataGrid1.Columns(2).CellText(DataGrid1.Bookmark)
strCCode
=
DataGrid1.Columns(1).CellText(DataGrid1.Bookmark)
sql
=
"select
*
from
停时统计
where
date='"
&
strFCode
&
"'
and
id='"
&
strSCode
&
"'
and
ycqk='"
&
strCCode
&
"'"
rs.Open
sql,
dm,
adOpenDynamic,
adLockOptimistic
rs.Delete
rs.Update
rs.Close
End
Sub
'“增加”按钮的程序
Private
Sub
Command1_Click()
sql
=
"select
*
from
停时统计
order
by
id"
rs.Open
sql,
dm,
adOpenDynamic,
adLockOptimistic
rs.AddNew
rs.Fields("date")
=
Date
rs.Fields("id")
=
Text7.Text
-
1
rs.Fields("ycqk")
=
Combo1.Text
rs.Fields("date1")
=
Text1.Text
rs.Fields("time1")
=
Text2.Text
rs.Fields("date2")
=
Text3.Text
rs.Fields("time2")
=
Text4.Text
rs.Update
rs.Close
With
Adodc1
Adodc1.ConnectionString
=
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source="
&
App.Path
&
"\
db1
.mdb;Persist
Security
Info=False"
Adodc1.RecordSource
=
"select
*
from
停时统计
where
date
=
cdate('"
&
Text8.Text
&
"')
and
ycqk
=
'"
&
Combo1.Text
&
"'
order
by
id"
Adodc1.Refresh
DataGrid1.Refresh
End
With
End
Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
新增:adodc1.addnew
查询:用select
<字段名表>
form
<数据表名称或视图名称>[where<条件表达式>][group
by<字段名1>][order
by<字段名2>]
修改:先打开数据表然后更新表,更新:adodc1.undatecontrols
保存:adodc1.updatebatch
删除:adodc1.delete
查询:用select
<字段名表>
form
<数据表名称或视图名称>[where<条件表达式>][group
by<字段名1>][order
by<字段名2>]
修改:先打开数据表然后更新表,更新:adodc1.undatecontrols
保存:adodc1.updatebatch
删除:adodc1.delete
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
新增,删除,修改,保存不是VB的问题
而是SQL语句的问题.
而是SQL语句的问题.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询