问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于数据库Access的一些问题

发布网友 发布时间:2022-05-01 20:15

我来回答

2个回答

懂视网 时间:2022-05-04 01:21

很少采用Access做数据库开发,前段时间,朋友接了一个小单,让我帮忙做后台开发,采用Access + Asp.Net开发,结果在开发过程使用Access碰到不少问题,所以把这些问题总结一下,希望对其它人有些帮助 1: Access分页脚本问题 使用Access作为数据库开发系统时

很少采用Access做数据库开发,前段时间,朋友接了一个小单,让我帮忙做后台开发,采用Access + Asp.Net开发,结果在开发过程使用Access碰到不少问题,所以把这些问题总结一下,希望对其它人有些帮助

1: Access 分页脚本问题

使用Access作为数据库开发系统时,页面数据分页的方案有好几种:

1.1 使用DataGridView自带的分页功能.

1.2. 使用SELECT TOP NOT IN 来实现。类似如下所示:

SELECTTOP100

[ID] ,

[Message] ,

[CreateDate]

FROM ScrollMessage

WHERE ID NOTIN ( SELECTTOP900

ID

FROM ScrollMessage

ORDERBY ID )

ORDERBY ID


1.3.使用嵌套的TOP结合分页控件AspNetPager来实现

1.4. 设置一个自增长字段.并且该字段为INDEX.(网上有方案,我没有研究过这种方案)

其实上面几种方案中,我觉得效率最高的应该是使用TOP嵌套方案(特别是当数据量大的时候),也是我下面将要讲解的。 如下图所示:假设有些滚动信息需要分页显示,则我们可以这样处理

1.1 解决Access 分页,首页或最后一页数据显示错误、混乱问题

///



/// 分页获取滚动消息数据

///


///一页显示数据条数

///当前页的数据在所有数据中位置(排序)

///查询条件

///返回当前条件下的滚动消息

public DataTable GetScrollMessage(int pageSize, int curPageSize, string condition)

{

string cmdText =string.Format(@"SELECT * FROM

(SELECT TOP {0} * FROM

(

SELECT TOP {1} ID, Message,CreateDate

FROM ScrollMessage

WHERE 1=1 {2}

ORDER BY ID DESC

) T

ORDER BY T.ID ASC

) TT ORDER BY TT.ID DESC;

", pageSize, curPageSize, condition);





return DbHelper.ExecuteDataSet(cmdText).Tables[0];



}

View Code

privatevoid BindGridView()
{
// 当前页数据显示个数
int pageSize = AspNetPager1.PageSize;

// AspNetPager 控件中当前显示的页
int pageIndex = AspNetPager1.CurrentPageIndex;
int curPageSize =0;
MessageMangent module =new MessageMangent();

//设置AspNetPager 的RecordCount属性
AspNetPager1.RecordCount = module.GetScrollMessageCount("");

if (pageIndex == AspNetPager1.PageCount)
{
pageSize = AspNetPager1.RecordCount - (pageIndex -1) * pageSize;

if (curPageSize ==0)
curPageSize = AspNetPager1.RecordCount;

}
else
{
curPageSize = pageSize * pageIndex;
}



DataTable dtDataSource = module.GetScrollMessage(pageSize, curPageSize, "");

gvMessage.DataSource = dtDataSource;
gvMessage.DataBind();
}


上面代码已经能解决分页数据错乱问题,但是其实里面还有个隐藏的bug,就是当数据表没有任何记录时,它会报错:“SELECT 子句中包含一个保留字、拼写错误或丢失的参数,或标点符号不正确”。 可能有些人被这个人弄得莫名其妙,其实主要是TOP 0引起的, 你用SELECT TOP 0 * FROM A去查询设计里面执行下,就会弹出那个错误提示。所以要修改下上面的代码如下:

View Code

privatevoid BindGridView()
{
// 当前页数据显示个数
int pageSize = AspNetPager1.PageSize;

// AspNetPager 控件中当前显示的页
int pageIndex = AspNetPager1.CurrentPageIndex;
int curPageSize =0;
MessageMangent module =new MessageMangent();

//设置AspNetPager 的RecordCount属性
AspNetPager1.RecordCount = module.GetScrollMessageCount("");

if (pageIndex == AspNetPager1.PageCount)
{
pageSize = AspNetPager1.RecordCount - (pageIndex -1) * pageSize;

if (curPageSize ==0)
curPageSize = AspNetPager1.RecordCount;

}
else
{
curPageSize = pageSize * pageIndex;
}

if (curPageSize ==0&& pageSize ==0)
{
curPageSize =1;
pageSize =1;
}


DataTable dtDataSource = module.GetScrollMessage(pageSize, curPageSize, "");

gvMessage.DataSource = dtDataSource;
gvMessage.DataBind();
}

1.2 SELECT TOP 失效问题,比如只需前十条记录,结果它给你查出了所有记录。这主要是查询TOP语句的后面使用Order by,而且Order by字段中有重复值的话,那么这个TOP很会失效而会返回所有记录,所以Order by后面最好用主键字段。我又一次就是犯了这个错误,查询语句如下所示,本来工作好好的,但是由于客户需求,把CreateDate字段从yyyy-MM-dd HH:mm 改成yyyy-MM-dd 结果排序全部混乱了。

View Code

string cmdText =string .Format(
@"SELECT * FROM
(
SELECT TOP {0} *
FROM (
SELECT TOP {1} * FROM Images I
INNER JOIN BaseImgPage P ON I.PageID = P.PageID AND I.SubType = P.SubType
WHERE I.PageID =@PageID AND I.SubType=@SubType"+ searchCondtion +@"
ORDER BY CreateDate ASC
) ORDER BY CreateDate DESC
) ORDER BY ImageSortNum DESC;", pageSize, curpageSize);


2 关键字问题,像password等,这样网上介绍很多了,想必大家都比较了解。这里就不多说了

3 错误提示"操作必须使用一个可更新的查询",部署到服务器上,插入或更新数据时,有时会爆出这样的错误

1.Win 2000/ Win 2003 系统,在数据库文件上(*.mdb)点鼠标右键,选择属性,点安全,查看是否存在everyone用户,如果没有,添加everone用户,勾选"完全控制".

2.Win XP 系统,打开 data 文件夹,点击“工具”->“文件夹选项”->“查看”,找到“使用简单文件共享(推荐)”这项,把前面的勾去掉。然后在数据库文件上(*.mdb)点鼠标右键,选择属性,点安全,查看是否存在everyone用户,如果没有,添加everone用户,勾选"完全控制".

热心网友 时间:2022-05-03 22:29

(1) 上述实验中,插入“已结项项目”表的命令是否可以省略字段列表?为什么?

可以,因为select语句的输出列与要赋值的表中对应字段值的数据类型相同

(2)删除“已结项项目”的命令的条件为什么没有比较对象?

项目表中的“是否结项”字段,应该是个布尔值(逻辑值)字段,也就是只有 true 和 false 两种情况。 "AND 是否结项" 就等价于 "AND 是否结项 = 1" 或者 "AND 是否结项 = true" 这种情况。属于省略的写法

删除查询或更新查询如果需要通过其他表的条件实现,如何在设计视图中实现?

①将指定表添加到查询设计视图中,在“查询类型”组中单击“更新”或者“删除”按钮,在设计网格中增加到“更新”或“删除”栏

②将需要更新或者删除的字段加入到设计网格中,并在对应的“更新到”栏或者“删除”栏中输入更新或删除表达式

③单击工具栏中的“保存”按钮,然后单击“运行”,在弹出的提示框中,选择“是”按钮

1)写出将附录中的“学院”表数据导入到“项目管理”数据库中的步骤。(通过文本文件方式)

(1)选择Word表复制,打开记事本,粘贴,然后命名为“学院”存储。

(2)进入Access,打开刚创建的Access文件,选择“外部数据”选项卡“导入并链接”组下“文本文件”按钮单击,打开“获取外部数据-文本文件”对话框。

(3)在该对话框中,单击“指定数据源”后面的“浏览”命令按钮,弹出“打开”对话框,找到要导入的文本文件“学院.txt”,单击“打开”按钮。

(4)回到“获取外部数据-文本文件”对话框中,再选择“指定数据在当前数据库中的存储方式和存储位置”下面的“将源数据导入当前数据库的新表中”单选项。

(5)单击“确定”按钮,打开“导入文本向导”对话框。在此对话框中,选择单选按钮中的“固定宽度-字段之间使用空格使所有字段在列内对齐”。

(6)单击“下一步”按钮,打开下一个“导入文本向导”对话框。在此对话框中设置分隔线,利用鼠标调整、移动、删除字段之间的分隔线。

(7)单击“下一步”按钮,弹出第三个导入向导对话框。在此对话框中对每个字段设计字段名称、数据类型、有无索引、以及哪些字段不导入。

(8)单击“下一步”按钮,弹出第四个导入向导对话框,在此对话框中选择“主键”。然后单击“下一步”按钮。弹出第五个导入向导对话框,在此对话框中设置导入后的表名。

(9)单击“完成”命令按钮。这时Access数据库中就产生一个导入的表。

(2)写出将附录中“专业”表数据导入到“项目管理”数据库中的步骤。(通过Excel文件)

(1)选择Word表复制,启动Excel,粘贴,然后命名为“专业”存储。

(2)在Access中单击“外部数据”选项卡下“导入并链接”组中的“Excel”按钮,弹出“获取外部数据-Excel电子表格”对话框,单击“浏览”按钮,指出文件“专业.xlsx”的完整存放路径,然后选中“将源数据导入当前数据库的新表中”。

(3)单击“确定”按钮,弹出“导入数据表向导”,选中“第一行包含列标题”。

(4)单击“下一步”按钮,可对每个字段的数据类型以及索引进行需要的设置。

(5)单击“下一步”按钮,可对表的主键进行设置。这里选择“我自己选择主键”,并设置为“专业编号”。

(6)单击“下一步”按钮,在“导入到表”的文本框中输入“专业,再单击“完成”按钮即可。

2.导出操作

将“学院”和“专业”联接为一个表的查询,然后导出到Excel中。

写出操作的主要过程。

① 将Access切换到SQL视图,输入命令Select * from 学院 inner join 专业 on 学院.学院编号=专业.学院编号,将“学院”与“专业”链接为一个表

② 点击“保存”,命名为“查询1”

③ 在“外部数据”选项卡下,点击“导出”一栏的Excel文件,选择文件保存路径,点击“确定”
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
三七粉贵吗多少钱一斤 三七粉多少钱一斤 万达有什么app 如何避免好学生成为心态受害者? 为什么好学生心态会害了自己呢? 好学生心态受害者是怎样一种存在? 好学生心态有什么影响? 好学生心态受害者是指什么意思? “好学生心态受害者”是指哪些人? 好学生心态受害者是指谁呢? 好学生心态受害者是指什么人? 十个一活动作文500字 长安工地用电电费多少钱一度? 如何学习 iOS Cydia 插件开发 ACCESS数据库应用实验要求如下,,急急急 ios开发,这个tableView的group是怎样做的,请用代码完整的写出来,谢谢 老兵退伍十个一活动有哪些? 纷然杂陈是什么意思 大学生村官“十个一”具体是指什么? 无彩纷陈哪个字错了? 清除ORACLE数据库缓存有几种方法,分别是哪些? 十个一活动怎么写 爱七色五味多纷陈什么意思 纷呈是什么意思 公安局“十个一”工作法是什么 安康杯 “十个一”活动 是哪十个一? 七色五味多纷陈什么意思 “纷陈”是什么意思? 小学生爱国主义 十个一是什么? 火山抖音版同一个设备只支持一个号发视频是吗? 按键精灵自动喊话脚本如何写? 众说纷纭的意思是什么 ios开发,请问这个tableVIew怎么做,请用完整代码写出来 2012年天津市施工用电多少钱一度 急,Access2003数据库实验,求高手解答,算成绩啊! 合肥建筑施工用电多少钱一度? 无锡施工用电多少钱一度 万绪啥意思 杭州建筑工地电费多少钱一度? 陈群雄纷争的意思解释意思。 关于Access的问题 纷争是什么意思? 陈姓的含义 重庆施工用电多少钱一度? 百鸟朝凤是什么含意? 工地开空调收工人两元钱一度电费合理吗 纷纷出发的意思 "纷纷出发"的意思是什么? 宁波建筑电费是多少钱一度 阅读下面文字,按要求答题。(6分) 上亿年的繁衍生息造就了地球连锦不断的地理诗篇,在这幅异彩纷陈的画 美的微波炉x3-233A工作正常,就不加热