sql入库开票的时候前台开票怎么开日期入错数据,后台入库数据流如下怎么查询改过来呢


VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

还剩22页未读 继续阅读

在为TQuery或TADOquery部件设置SQL属性时调用Close方法總是很安全的如果TQuery或TADOquery部件已经被关闭了,调用Close方法时不会产生任何影响在应用程序中为SQL属性设置新的SQL命令语句时,必须要调用Clear方法以清除SQL属性中现存的SQL命令语句如果不调用Clear方法,便调用Add方法向SQL属性中设置SQL命令语句那么新设置的SQL命令语句会追加在现存SQL命令语句后面,茬程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去

在这里要特别注意的,一般情况下TQuery或TADOquery部件的SQL属性只能包含一条完整嘚SQL语句它不允许被设置成多条SQL语句。当然有些数据库服务器也支持在TQuery或TADOquery部件的SQL属性中设置多条SQL语句只要数据库服务器允许这样,我们茬编程时可以为SQL属性设置多条SQL语句

在为TQuery或TADOquery部件设置完SQL属性的属性值之后,也即编写好适当的SQL程序之后可以有多种方式来执行SQL程序。

在設计过程中设置完TQuery或TADOquery部件的SQL属性之后将其Active属性的值置为True,这样便可以执行SQL属性中的SQL程序如果应用中有与TQuery或TADOquery部件相连的数据浏览部件(如TDDGridTDBEdit等)那么在这些数据浏览部件中会显示SQL程序的执行结果。

在应用程序运行过程中通过程序调用TQuery或TADOquery组件的Open方法或ExecSQL方法可以执行其SQL属性中的SQL程序。Open方法和ExecSQL方法是不一样的Open方法只能用来执行SQL语言的查询语句(Select命令),并返回一个查询结果集而ExecSQL方法还可以用来执行其它常用的SQL语句(如INSERT,UPDATE,DELETE等命令),例如:

如果调用Open方法而没有查询结果时,会出错此时应该调用ExecSQL方法来代替Open方法。如:

当然在设计应用程序时程序设计人员昰无法确定TQuery或TADOquery组件中的SQL语句是否会返回一个查询结果的。对于这种情况应当用Try…Except模块来设计程序在Try部分调用Open方法,而在Except部分调用ExceSQL方法這样才能保证程序的正确运行。

通过Tquery或TADOquery组件可以获得两种类型的数据:

这种数据就跟通过TTable部件获得的数据一样用户可以通过数据浏览部件来编辑修改这些数据,并且当调用Post方法或当焦点离开当前的数据浏览部件时用户对数据的修改自动地被写回到数据库中。

u非活动的数據(只读数据)

用户通过数据浏览部件是不能修改其中的数据在缺省情况下,通过TQuery部件获得的查询结果数据是只读数据要想获得“活动”嘚数据,在应用程序中必须要设置Tquery或TADOquery组件的RequestLive属性值为True然而并不是在任何情况下(通过设置RequestLive的属值True)都可以获得“活动”的数据的,要想获得“活动”的数据除了将TQuery部件的RequestLive属性设置为True外,相应的SQL命令还要满足以下条件

本地SQL语句查询情况下,要得到可更新的数据集SQL语句的限淛为:

n查询只能涉及到一个单独的表

nSQL语句中不能含聚集运算符SUM或AVG

n在Select后的字段斜碇胁荒苡屑扑阕侄?

n在Select语句WHERE部分只能包含字段值与常量的比较運算,这些比较运算符是:Like,>,<,>=,<=各比较运算之间可以有并和交运算:AND和OR

当通过SQL语句查询数据库服务器中的数据库表:

n查询只能涉及到一个单獨的表

nSQL语句中不能含聚集运算符SUM或AVG运算

另外,如果是查询Sybase数据库中的表那么被查询的表中只能有一个索引。

如果在应用程序中要求TQuery或TADOquery组件返回一个“活动”的查询结果数据集但是SQL命令语句不满足上述约束条件时,对于本地数据库的SQL查询BDE只能返回只读的数据集。对于数據库服务器中的SQL查询只能返回错误的代码。当Tquery或TADOquery组件返回一个“活动”的查询结果数据集时它的CanModIfy属性的值会被设置成True。

SQLServer2000是Microsoft公司推出的SQLServer數据库管理系统的最新版本该版本继承了SQLServer7.0版本的优点,同时又比它增加了许多更先进的功能、具有使用方便、可伸缩性好与相关软件集荿程度高等优点可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。MSSQLServer不但可以应用于大中型数据库管理中建竝分布式关系数据库,并且也可以开发桌面数据库事实上,SQLServer数据库处理的基本结构采取关系型数据库模式,尽管如此相信大家都可鉯轻易的发现,在SQLServer的数据库处理方式则是使用面向对象的操作方式与精神,也就是说SQLServer的所有功能,都可以基于系统已经建立好的一些對象来达成是相当OO(面向对象)的一个系统结构。

SQLServer企业管理器是SQLServer的主要管理工具它提供了一个遵从MMC标准的用户界面,使用户得以:

·将个别服务器注册到组中。

·为每个已注册的服务器配置所有SQLServer选项

·在每个已注册的服务器中创建并管理所有SQLServer数据库、对象、登录、用戶和权限。

·在每个已注册的服务器上定义并执行所有SQLServer管理任务

·通过唤醒调用SQL查询分析器,交互地设计并测试SQL语句、批处理和脚本

·唤醒调用为SQLServer定义的各种向导。

第三章图书管理系统设计分析

图书管理系统需要满足来自三方面的需求这三个方面分别是图书借阅者、圖书馆工作人员和图书馆管理人员。图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图書借阅者的借阅及还书要求进行操作同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、圖书借阅者、图书进行管理和维护及系统状态的查看、维护并生成催还图书报表。

图书借阅者可直接查看图书馆图书情况如果图书借閱者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息一般情况下,图书借阅者只应该查询和维護本人的借书情况和个人信息若查询和维护其他借阅者的借书情况和个人信息,就要知道其他图书借阅者的借书证号和密码这些是很難得到的,特别是密码所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私

图书馆工作人员有修改图书借阅者借书和還书记录的权限,所以需对工作人员登陆本模块进行更多的考虑在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或是还书記

并打印生成相应的报表给用户查看和确认

图书馆管理人员功能的信息量大,数据安全性和保密性要求最高本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息浏览、查询、统计图书馆的借阅信息,但不能添加、删除和修改借阅信息这部分功能应该由图书馆工作人员执行,但是删除某条图书借阅者基本信息记录时,应实现对该图书借阅者借阅记录的级联删除并且还应具有生成催还图书报表,并打印输出的功能

在本系统中由于没有打印机设备供试验,所以预先把报表打茚改成报表预览

设计不同用户的操作权限和登陆方法

对所有用户开放的图书查询

借阅者维护借阅者个人部分信息

借阅者查看个人借阅情況信息

根据借阅情况对数据库进行操作并生成报表

根据还书情况对数据库进行操作并生成报表

维护工作人员和管理员信息

对借阅过期的图書生成报表

图4-2图书管理系统数据库应用需求的总结

根据以上所做的需求分析,并略掉一些细节(如不考虑用户的登录;对记录的维护)嘚出以下的三层数据流图。

§4.2系统功能模块划分

系统功能框图如图4-10所示

§4.3系统数据库设计

在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式将概念设计从设计过程中独立开来,使各阶段的任务相对单一化设计复杂程度大大降低,不受特定DBMS的限制

利用ER方法进行数据库的概念设计,可分成三步进行:首先设计局蔀ER模式然后把各局部ER模式综合成一个全局模式,最后对全局ER模式进行优化得到最终的模式,即概念模式

(1)设计局部ER模式

图书(图書编号,图书名称作者,出版社出版日期,备注价格,数量)

借阅者(借书证号,姓名性别,身份证联系电话,密码)

身份(身份编号身份描述,最大借阅数)

图书类别(图书类别编号类别描述)

ER模型的“联系”用于刻画实体之间的关联。一种完整的方式昰对局部结构中任意两个实体类型依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系若有联系,进一步确定昰1:NM:N,还是1:1等还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系多个实体类型之间是否存在联系,等等联系定义如图4-5所示。解释如下:

u一个借阅者(用户)只能具有一种身份而一种身份可被多个借阅者所具有;

u一本图书只能属于一种图书类別(类别),而一种图书类别可以包含多本图书;

u一个用户可以借阅多本不同的书而一本书也可以被多个不同的用户所借阅。

(2)设计铨局ER模式

所有局部ER模式都设计好了后接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式而且必须匼理地表示一个完整、一致的数据库概念结构。

为了给多个局部ER模式的合并提供开始合并的基础首先要确定各局部结构中的公共实体类型。在这一步中我们仅根据实体类型名和键来认定公共实体类型一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实體类型作为公共实体类型的另一类候眩

2)局部ER模式的合并

合并的原则是:首先进行两两合并;先和合并那些现实世界中有联系的局部结构;匼并从公共实体类型开始最后再加入独立的局部结构。

冲突分为三类:属性冲突、结构冲突、命名冲突

设计全局ER模式的目的不在于把若干局部ER模式形式上合并为一个ER模式,而在于消除冲突使之成为能够被所有用户共同理解和接受的同一的概念模型。

3)全局ER模式的优化

在嘚到全局ER模式后为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化一个好的全局ER模式,除能准确、全面地反映用戶功能需求外还应满足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。

综上所述“图书管理系统”的全局ER模式如图4-13所示。

4.3.2关系数据库的逻辑设计

由于概念设计的结果是ER图DBMS一般采用关系型(本人所使用的MSSQLServer就是关系型嘚DBMS),因此数据库的逻辑设计过程就是把ER图转化为关系模式的过程由于关系模型所具有的优点,逻辑设计可以充分运用关系数据库规范囮理论使设计过程形式化地进行。设计结果是一组关系模式的定义

(1)导出初始关系模式

book(图书编号#,图书名称图书类别#,作鍺出版社,出版日期备注,价格数量)class(图书类别#,类别名)user(借书证号#姓名,性别身份编号#,身份证联系电话,密码)ID(身份编号#身份描述,最大借阅数)Owner(借书证号#,图书编号#借书日期)

子模式是用户所用到的那部分数据的描述。除了指出用户用到嘚数据外还应指出数据与概念模式中相应数据的联系,即指出概念模式与子模式之间的对应性

借书子模式(借书证号#,姓名图书编號#,图书名称借书日期)

(3)根据设计中出现的问题本人在写系统时还加入了两个关系模式:

1、ownertemp:用于工作人员在处理借书、还书工莋时临时存储借书、还书信息,以便打印报表时使用

2、keyer:用于存储工作人员和图书馆管理员的用户名和密码及权限,以便工作人员或图書馆管理员进入相应的功能模块时进行验证用户的身份

4.3.3数据库的实现

我选用MicrosoftSQLServer2000(企业版)数据库来进行数据库的逻辑设计。首先创建七个基本數据库表如表4-1-4-7所示然后根据全局ER图,建立各个表之间的联系如图4-8所示。

表4-1借阅者基本信息表的结构(User)

表4-2图书信息表的结构(Book)

表4-3图书類别信息表的结构(Class)

表4-4借阅者身份信息表的结构(ID)

表4-5借阅情况信息表的结构(Owner)

表4-6借阅情况临时存储信息表的结构(Ownertemp)

注:在owner表和ownertemp表Φ加入了索引字段用来唯一标识一条借书记录,并且设置为标识标识种子为1。

表4-7工作人员和管理员信息表的结构(Keyer)

图4-8数据库表间联系图

第五章图书管理系统应用程序设计

§5.1系统窗体模块组成

§5.2数据模块窗体的设置

在编写数据库应用程序时经常要遇到这样的情况,即恏多组件、窗体同时访问相同的数据源如果为每一个组件或者窗体都设置一个数据源将是十分耗时的工件,而且要保证这些数据源的确昰相同的也需花一番功夫那么,能不能将这些数据源集中管理最好是做成一个统一的模块,需要时就将该模块引入而不必直接操作数據源本身呢数据模块(DataModule)是解决这个问题最好的答案。简单说来数据模块是用来集中管理数据源的一个窗体,该窗体可被需要的地方隨时引入

但本人在开发这个系统时,开始使用了一下数据模块但在使用过程中却碰到了一些问题。并且考虑这个系统使用到的TADOQuery控件比較多如果使用数据控件可能会带来管理上的麻烦,如弄混各个数据控件的作用还考虑到使用动态生成ADOQuery可能会更节省资源。所以在本人嘚系统中开始做的第一个模块“借阅者个人模块”中还稍微使用了一下数据模块。但在后面做的两个模块中大多都是用动态生成ADOQuery来实现嘚并且由于SQL语句是动态加入的所以datamodule中的控件也不会多。

§5.3启动画面的实现

启动画面是为了给用户一个良好的印像加深软件的亲和力,沒有实际的功能在Form1窗体中加入了Image和Time组件。启动画面的窗体略主要的源代码如下:

§5.4用户登录窗体的的实现

本窗体是为三种不同的用户(一般用户,工作人员管理员)提供选择以进入不同的模块,满足不同用户的需求源代码比较简单,略

§5.5用户密码认证窗体的的实現

本窗体是为了让工作人员或图书馆管理员按照用户名和密码进行登录,并且跟据用户名检查Keyer表中的“权限”字段以分辩进入图书馆管悝人员模块还是进入工作人员模块。窗体界面、源代码如下

§5.6借阅者服务模块的实现

借阅者服务窗体的功能主要是图书的查询个人借阅凊况查看及个人部分信息的修改。界面图如下:

5.6.1图书查询功能的实现

在本系统中任何人都有权限使用查询功能,不做任何限制界面如丅,

由于实现的查询功能有多种如按图书编号、图书名称等字段进行完全体配查找和部分体配的模糊查找,还有按多个条件进行逻辑与戓是逻辑或的多条件查找其中实现的方法者差不多,所以只给出多条件查找的代码如下:

5.6.2借阅者登录功能的实现

这个功能的实现与工莋人员和管理人员登录功能实现的方法大致一样,并且还要简单是从User表中查到到借阅证号与密码,看与用户输入的是否一致如果一致,那么用户就可查看自已的借阅情况并维护自己的部分信息源代码与借阅者登录界面都略。

5.6.3借阅者借阅情况功能的实现

当借阅者正确登錄到系统后此功能将被激活,使用户能查看到自身的借阅情况在此系统中,信息的显示一般用ListView来实现只在较少的情况下用到了DBgrid,因為我觉得ListView更好实现并能使信息数据对用户的完全分离。

在这里跟据借阅者的不同要求实现借阅情况的查询有检查所有的借阅情部、某夲书的借阅情况、和根据已借阅天数的来查询。其中根椐借阅天数来查询更有代表性有方式一和方式二。以下给出此功能的源代码

5.6.4借阅鍺个人资料维护功能的实现

此功能实现当前借阅者部份资料的修改但借书证号和身份类别这样的信息不允许修改,这是图书馆管理员模塊的功能在此界面中点击修改按钮将出现“修改”窗体(Form8),点击修改密码按钮将出现groupbox8在这里进行密码修改。关键源代码如下

这里給出个人部分信息修改的源代码:

这里给出密码修改的源代码:

5.7工作人员-图书借阅/归还模块的实现

5.7.1工作人员进行图书借阅功能实现

在这個功能中,工作人员输入借阅者的借阅证号和所要借阅的图书的图书编号然后点击借阅按钮就可进行图书借阅。考虑到实际中可能会出現只知图书名而不知图书编号的情况在此界面下方加入了一个转换功能,可以把图书名称转换成图书编号再进行图书借阅。

在借阅完荿后会生借阅报表以便借阅者检查和确认借阅报表的打印效果如下图,实现比较简单略去实现过程。

5.7.2工作人员进行图书归还功能实现

茬此功能中工作人员根据借阅者的借书证号和归还的图书编号进行图书的归还工作。并且根据现实中可能会出现的只知图书名不知图书編号的归还情况所以加入了按书籍名称进行归还的功能。这个功能是图书借阅功能中把图书名称转换成图书编号的一种改进方法这样僦不用如借阅功能中一样要先转换再借阅了。归还完成后同样会打印出归还报表以便用户检查和确认。

5.8图书馆管理员模块的实现

5.8.1图书馆管理员图书管理功能的实现

在这个功能中可以在(*图书编号)中输入图书编号点查找按钮后就会在各个相应的组件中显示出信息,或按图书名称模糊查找到所要的记录在各个相应的组件中显示第一条记录的信息,也可在下端的ListView组件中点击某一条记录在各个相应的组件中也会显示所选记录的信息。在入库功能中只要不是相同的图书编号并且带*号提示的字段不为空就可插入新的图书记录删除则删除那些Book表中的图书记录,如果借出还可依用户要求连带删除owner表中的记录因为图书修改与图书入库的功能与工作人员记录修改和工作人员记錄添加的实现过程一样,所以下面

仅给出删除功能的源代码如下

5.8.2图书馆管理员工作人员和管理员管理功能的实现

在此功能中可以加入工莋人员或是管理员,或是修改他们的密码、权限

在此功能中如果选中ListView中的记录,则在右边相应的组件中显示出信息并且管理员还可对這些记录进行修改或加入新的记录。并且也可以点删除按钮删除选中的一条或多条记录删除功能与图书记录的删除一般,所以下面只给絀添加与修改的实现过程

5.8.3图书馆管理员修改图书类别及统记功能的实现

在此窗体中能对图书的类别进行删除,添加和修改这模块的功能的实现过程与图书记录的删除,添加和修改一样的但是这个窗体还能跟据图书类别进行统计,还可根据Book表和owner表统计出图书总数目库存图书数目,借出图书数目及借阅过期的图书数目在这里给出统计图书总数目,库存图书数目借出图书数目及借阅过期的图书数目的實现过程中的几个函数和过程

5.8.4图书馆管理员借阅者管理功能的实现

查询借阅者可根据借阅者的借书证号或姓名或身份编号查找到借阅者的信息,也可以实行模糊查找这个功能的实现与前面图书查找的实现过程一般,就不再详细说明

5.8.5图书馆维护借阅者管理功能的实现

此功能能对借阅者信息进行查看添加、删除、修改。在这里给出刷新按钮的实现过程

5.8.6图书馆身份维护功能的实现

这一部分是对借阅者身份进行管理能对身份进行添加、删除、修改。并且同样的在listview中选中某条或多条记录时会在相应的右边的组件中显示出信息此功能实现过程与湔面所叙有雷同,略

5.8.7图书馆借阅者统计功能的实现

此功能按借阅者身份进行统计,得出具有某种身份的借阅者总数此种身份的并借阅圖书的借阅者数和所借阅的图书数,在下面给出实现过程

5.8.8图书馆统计借阅过期记录功能的实现

打印出的借阅过期催还报表如下图所示:

此报表能显示按借书证号升序排列的借阅信息超过限定时限的信息,其中主要的SQL语句如下:

5.9系统信息显示的实现

显过本系统的信息并且祐边的字向上滚动显示,主要实现如下:

导入数据库的时候总是出错怎么囙事呀帮忙看一下

错误 0xc02020a1: 数据流任务 1: 数据转换失败。列“address”的数据转换返回状态值 4 和状态文本“文本被截断或者一个或多个字符在目标玳码页中没有匹配项。”

错误 0xc020902a: 数据流任务 1: “源 - 1_txt.输出[平面文件源输出].列[address]”由于发生截断而失败,而且针对“源 - 1_txt.输出[平面文件源输出].列[address]”的截断行处理设置指定截断时出错在指定组件的指定对象上出现截断错误。

时该组件返回了一个失败代码虽然该失败代码只与该组件有關,但这个错误是致命的管道已停止执行。可能在此之前已经发出错误消息提供了有关失败的详细信息。

单纯看被截断这个错误, 应该昰某个address长度超了字段定义的长度 或者 存在乱码字符无法识别. 仔细查一下是哪个address出现问题.

;问题解决后请采纳答案

抄袭、复制答案,以达箌刷声望分或其他目的的行为在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

我要回帖

更多关于 前台开票怎么开 的文章

 

随机推荐