社区
Delphi
帖子详情
用delphi5修改sql server2000出现“键列信息不足,更因影响太多的行”
yellowbb
2001-04-16 02:23:00
我的系统是:win2000,我曾试过用ado 连一个表,并用dbgrid显示出来,再dbgrid里直接修改,修改一行好像没又错误,修改多行就出错。用最简单的程序,只用updatebatch,还是有问题,请高手指点。我用过adotable 和adodataset都有错误。
...全文
146
4
打赏
收藏
用delphi5修改sql server2000出现“键列信息不足,更因影响太多的行”
我的系统是:win2000,我曾试过用ado 连一个表,并用dbgrid显示出来,再dbgrid里直接修改,修改一行好像没又错误,修改多行就出错。用最简单的程序,只用updatebatch,还是有问题,请高手指点。我用过adotable 和adodataset都有错误。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Crob
2001-06-09
打赏
举报
回复
修改完后要使用ADOTable1.Requery来刷新数据集。
不能使用updatebatch
ADOTable1.Requery
OK????
详情可查看TADOTable的帮助文档
CheerDesiger
2001-04-16
打赏
举报
回复
我也曾遇到这样的问题,可能是数据库锁定的原因,如果你构造SQL语句后执行修改就没有问题了。
如:Update Products Set ProductCode='QQQQ' WHere ProdductID=234223
yellowbb
2001-04-16
打赏
举报
回复
完全相同的记录是没有,多个字段相同,应该怎样解决。
WuHeHai
2001-04-16
打赏
举报
回复
可能因为表中存在“完全相同”的多条记录
可以先用SQL语句“Delete from TableName”删除全部记录,然后重新再来。
绿色
Sql
Server
原理及全新管理工具
几天前在盒子看到绿色
Sql
server
很高兴,现将本人对绿色
SQL
Server
的现实思路作一说明,不正确的地方还请指教。1.
Sql
servr.exe 运
行
参数。
Sql
Server
的启动可以为Windows服务方式(默认),也可以以应用程序方式启动。下面介绍
sql
servr.exe以应用程序方式启动时的参数问题。
sql
servr 应用程序用法:
sql
servr [-sinstance_name] [-c] [-dmaster_path] [-f] [-eerror_log_path] [-lmaster_log_path] [-m] [-n] [-Ttrace#] [-v] [-x] [-g number] [-O] [-y number]-sinstance_name 指定要连接到的
SQL
Server
实例。如果未指定命名实例,
sql
servr 将启动
SQL
Server
默认实例。重要 启动
SQL
Server
实例时,必须从实例所在的适当目录使用
sql
servr 应用程序。对于默认实例,从 MS
SQL
Binn 目录运
行
sql
servr。对于命名实例,在 MS
SQL
$instance_nameBinn 目录运
行
sql
servr。-c 表示以独立于 Windows NT 服务控制管理器的方式启动
SQL
Server
实例。当从命令提示符下启动
SQL
Server
时,可使用该选项缩短启动
SQL
Server
的时间。(注意:当使用该选项时,无法通过使用
SQL
Server
服务管理器或 net stop 命令停止
SQL
Server
,而且如果已从 Microsoft Windows NT? 系统注销,则
SQL
Server
将停止运
行
。)-dmaster_path指出 master 数据库文件的完全合法路径。在 -d 和 master_path 之间没有空格。-f以最小配置模式启动服务器。然后,系统管理员可对配置选项重新配置(使用 sp_configure 系统存储过程)。-eerror_log_path表示错误日志文件的完全合法路径。如果未指定路径,则默认实例的默认位置是 x:Program FilesMicrosoft
SQL
Server
MS
SQL
LogErrorlog,命名实例的默认位置是 x:Program FilesMicrosoft
SQL
Server
MS
SQL
$instance_nameLogErrorlog。在 -e 和 error_log_path 之间没有空格。-lmaster_log_path指示 master 数据库事务日志文件的完全合法路径。在 -l 和 master_log_path 之间没有空格。-m表示在单用户模式下启动
SQL
Server
实例。如果
SQL
Server
是以单用户模式启动的,则只能连接一个用户。CHECKPOINT 机制(它确保完成的事务定期从磁盘高速缓存写入数据库设备中)将不启动。(一般情况下,如果您遇到需要修复的系统数据库问题时,可使用此选项。)-n表示您不想使用 Windows NT 应用程序日志来记录
SQL
Server
事件。如果用 -n 选项启动
SQL
Server
实例,则最好也使用 -e 选项,否则将不会记录
SQL
Server
事件。-Ttrace#表示应使用指定的有效跟踪标记 (trace#) 来启动
SQL
Server
实例。跟踪标志用来启动具有非标准
行
为的服务器。有关可用跟踪标记 (trace#) 的
更
多
信息
,请参见跟踪标记。重要 当指定跟踪标志时,请使用 –T 来传递跟踪标志号。
SQL
Server
接受小写字母 t (-t);然而,-t 还设置
SQL
Server
支持工程师所需的其它内部跟踪标记。-v显示服务器的版本号。-x禁用维护 CPU 统计。-g memory_to_reserve指定内存的兆字节整数,该内存被保留下来用于
SQL
Server
2000
内部(进程内)运
行
的其它应用程序。-O指定不需要分布式 COM (DCOM),从而禁用异类查询。-y error_number如果
SQL
Server
2000
遇到在该选项中指定的错误
信息
,它将把表象堆栈跟踪写入错误日志。可以使用多个 –y 参数指定多个错误。2. 系统数据库路径问题. 一般情况下,正常安装
sql
server
之后,master等系统数据库的路径都是被设置为绝对路径,如果要改正数据库的路径为相对路径,可以使用以下
SQl
语句:
sql
:=format(' update sysaltfiles set filename='%s' where filename='%s' ', ['...data'+extractfilename(MDFFile),MDFFile]); ADOQuery1.Close; ADOQuery1.
SQL
.Text:=
sql
; ADOQuery1.Exec
SQL
;
sql
:=format(' update sysaltfiles set filename='%s' where filename='%s' ', ['...data'+extractfilename(LogFile),LogFile]); ADOQuery1.Close; ADOQuery1.
SQL
.Text:=
sql
; ADOQuery1.Exec
SQL
;
sql
:=Format('update sysdatabases set filename='%s' where name='%s'', ['...data'+extractfilename(MDFFile),Edit1.text]); ADOQuery1.Close; ADOQuery1.
SQL
.Text:=
sql
; ADOQuery1.Exec
SQL
;大家打开sysaltfiles 表和sysdatabases 一看就知道了,不多说了。除了系统数据库,其它的数据库也可以使用这种方法
修改
为相对路径。 使用相对路径的好处是可以让你的绿色
Sql
server
随时copy到任意目录或是任意其它机器上启动,并且原来的数据库全部可以使用,如果是绝对路径到了其它机器就不
行
了。3. 注册表问题: 大家可以看下面的注册表文件Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft
SQL
Server
$name][HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft
SQL
Server
$nameMS
SQL
Server
]"AuditLevel"=dword:00000000"DefaultLogin"="guest""ListenOn"=hex(7):53,00,53,00,4d,00,53,00,53,00,48,00,37,00,30,00,00,00,53,00, 53,00,4e,00,45,00,54,00,4c,00,49,00,42,00,00,00,00,00"LoginMode"=dword:00000000"Map_"="""Map#"="-""Map$"="""SetHostName"=dword:00000000"Tapeloadwaittime"=dword:ffffffff"uptime_pid"=dword:00001044"uptime_time_utc"=hex:26,57,c8,b3,fb,bb,c5,01[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft
SQL
Server
$nameMS
SQL
Server
CurrentVersion]"CurrentVersion"="8.00.194""RegisteredOwner"="""SerialNumber"="""CSDVersionNumber"=dword:00000300"CSDVersion"="8.00.761""Language"=dword:00000804"checksum"=hex:37,35,32,32,63,31,35,38,61,65,37,64,34,63,64,37,35,30,64,61,30, 33,34,62,37,64,63,32,30,61,36,36,39,37,62,34,61,35,65,36,63,66,62,61,38,37, 39,36,37,31,66,33,39,61,36,65,35,64,30,33,37,36,37,65,64,36,33,30,61,39,63, 36,66,37,36,30,35,65,32,66,34,66,31,33,63,39,33,63,34,66,62,66,34,66,64,38, 64,65,36,64,35,34,37,33,35,39,35,32,36,63,61,32,36,63,33,32,64,34,36,33,65, 36,39,34,30,65,61,37,64,35,30,61,66,34,64,32,66,38,37,36,30,61,39,64,30,61, 32,36,64,65,66,66,00[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft
SQL
Server
$nameMS
SQL
Server
Parameters][HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft
SQL
Server
$nameMS
SQL
Server
SuperSocketNetLib]"ProtocolList"=hex(7):74,00,63,00,70,00,00,00,6e,00,70,00,00,00,00,00[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft
SQL
Server
$nameMS
SQL
Server
SuperSocketNetLibNp]"PipeName"="\.pipeMS
SQL
$$name
sql
query"[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft
SQL
Server
$nameMS
SQL
Server
SuperSocketNetLibTcp]"TcpHideFlag"=dword:00000000"TcpDynamicPorts"="$port""TcpPort"="$port"[HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft
SQL
Server
$nameSetup]"FeatureName"="
Sql
Run""FirstStart"=dword:00000000"ProductCode"="{E09B48B5-E141-427A-AB0C-D3605127224A}""
SQL
DataRoot"="$path""
SQL
Path"="$path"这是注册一个
Sql
Server
实例所要使用的注册表,把里面的$name,$path,$port替换成你定义的实例名,当前程序所有路径,监听端口,然后导入注册表就可以了。4. 启动
Sql
Server
iPath:=ExtractFilePath(Application.ExeName); CommandLine:=PChar(iPath+'binn
sql
servr.exe -d...datamaster.mdf -l...datamastlog.ldf -e...Loglog.txt+Edit1.Text); CreateProcess( nil, CommandLine, nil, nil, true, CREATE_NO_WINDOW, nil, PChar(iPath+'binn'), StartupInfo, ProcessInformation )也可以直接写个.bat运
行
就ok了.5. 启动日志问题。 这个问题最简单,因为在执
行
sql
servr.exe时指定的有log文件,你只用用个定时器(50ms)读文件,就可以在程序中显示出来启动日志了,呵呵,这只是个思想,具体的自已想办法吧. 6. 停止服务 用CreateProcess可以得到进程ID,TerminateProcess就关了
sql
server
进程,服务就停了,简单吧。根据上面的6个步骤,你就可以自已搞定一个绿色的
Sql
Server
了.并且你可以根据不同的
sql
server
版本,整理出所有版本的绿色
sql
server
。绿色
sql
server
企业版绿色
sql
server
个人版绿色 MSDE... ...这样以后遇到什么操作系统都全部搞定。 最后说一句,只要你能把几个
Sql
server
版本的数据整理好(主要是系统数据库的路径问题(好像现在盒子已经有绿色企业版的文件了),DLL全部copy就OK了),都可以使用我的管理工具进
行
管理,呵呵,当然你也可以作出自已的管理器。我的管理器,主要是为了我自已用,大家如果用着可以,请多提意见。由于
sql
server
数据太大,并且盒子上已经有了,这次只上传了exe和目录结构。不知道说的是否正确,如果还有什么问题,我们一起交流. Email: 11826088@163.com
Delphi
从
Sql
Server
中提取多媒体音乐文件
Delphi
与数据库结合的例子,从
Sql
Server
中提取多媒体文件,包括音乐文件和视频文件都可以,
Delphi
7核心代码都在,数据库太大了,这里不上传了,一般看代码就
行
了,真需要的话,自己参照代码可重建数据库字段,造成便请谅解。 运
行
环境:
Delphi
+MS
SQL
Delphi
最新三层源码
随便说说最近项目中的三层架构吧。讲点实际的东西。我最讨厌空讲道理。网上讲道理的
太多
了,不喜欢举例子。 大多数文章中都或多或少的讲到了三层架构。表示层,业务层,数据层。又把业务层再细分,分为外观服务层,主业务服务,及数据库库服务层。 今天主要讨论一下业务层吧。举个最简单的例子。客户端获取数据。 业务层要与表示层尽量解藕, 我的方法是:首先我们在中间层TLB_中定义一个接口 IBusinessService, 定义一个方法。getvoList,我要得到一个VO的列表, VO即ValueObject, 例如:TValueObject= class(TPersistent) private b_insertFlag :Boolean; b_updateFlag :Boolean; b_deleteFlag :Boolean; d_rowVersion :double; procedure setInsertFlag(pInsertFlag :Boolean); function getInsertFlag: Boolean; procedure setUpdateFlag(pUpdateFlag :Boolean); function getUpdateFlag: Boolean; procedure setDeleteFlag(pDeleteFlag :Boolean); function getDeleteFlag: Boolean; procedure setRowVersion(pRowVersion :double); function getRowVersion:double; protected function GetOLEData: OleVariant; virtual; procedure SetOLEData(const Value: OleVariant); virtual; published property bInsertFlag: Boolean read getInsertFlag write setInsertFlag; property bUpdateFlag: Boolean read getUpdateFlag write setUpdateFlag; property bDeleteFlag: Boolean read getDeleteFlag write setDeleteFlag; property dRowVersion: double read getRowVersion write setRowVersion; property POLEData:OleVariant read GetOLEData write SetOLEData; end;TUserVO = class(TValueObject) private id: string; name: string; password: string; 。。。。。。。。。。 VO的列表:TValueObjectList = Class(TObjectList) private ValueObject: TValueObject; ClassName: TClass; procedure setClassName(pTmpClsName :TClass); function getClassName: TClass; procedure setValueObject(pTmpVO :TValueObject); function getValueObject: TValueObject; protected function GetOLEData: OleVariant; virtual; procedure SetOLEData(const Value: OleVariant); virtual; published function AddItem(index: integer; AObject: TObject ):Integer; virtual; function GetItem(index, itemid: integer ): TObject; virtual; function CountItem:Integer; virtual; public constructor Create; virtual; destructor Destroy; override; procedure AfterConstruction; override; property PClassName: TClass read getClassName write setClassName; property POLEData: Ole
学籍管理
信息
系统 学籍
信息
管理系统
还有很多组建,名字是:学籍管理
信息
系统组建 太大了,一次只能上传20M啊 1.解压缩database.rar文件,将student附加到
sql
server
数据库 2.在
delphi
的别名服务器里建立别名: sinfo,关联到student数据库,可以通过注册系统ODBC来实现。 3.
修改
cjzbdyunit文件的ADO连接组件ADOConnection1的连接字符串,主要是将Data Source属性设置成读者自己的
SQL
Server
服务器名称。如果连接数据库仍然有问题,则可以检查看看其他含有report builder打印控件的窗体的ADO连接组件的连接属性。 3.运
行
程序 程序用到的控件:report builder6.0.3(报表制作工具) xpmenu(xp风格菜单) ,打开程序前必须安装上。 还有很多组建,名字是:学籍管理
信息
系统组建
某服装工厂进销存系统
Delphi
源代码.rar
某服装工厂进销存系统
Delphi
源代码,数据库基于
SQL
SERVER
,用到了三方控件,系统主要功能模块:基础资料、业务管理、报表统计、系统管理等功能,测试前请确保数据库正确连接,否则可能会导致功能出错。本系统功能不算太强大,发上来的目的是学习研究。
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章