100分,求解同一表中,字段关联更新问题

xmark23 2003-10-17 02:31:49
我有一个表,其中有两个字段,如,字段a、字段b ,要求,字段b的值要随着 字段a的值变化而变化,如,字段a <10,则字段b 为1,如果字段a >10,则字段b为2,而且这两字段都在同一个表中。
还有一个问题,怎么样才能把 foxpro 的自由表,导入到sql server 2000 中,在程序中实现,最好能用vb的程序实现。

谢谢各位,我是个新手,第一次发贴,希望各位帮忙!谢谢!
...全文
31 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmark23 2003-10-20
  • 打赏
  • 举报
回复
谢谢各位帮忙!
wzh1215 2003-10-19
  • 打赏
  • 举报
回复
如果在SQL Server 7.0上面就不能用触发器了!
这种情况下只能是在插入或修改表之后再用update把表再修改一次了!
wzh1215 2003-10-19
  • 打赏
  • 举报
回复
在case语句中有else可以用。
case when 1=1 then 1 else 0 end
xmark23 2003-10-19
  • 打赏
  • 举报
回复
zjcxc(邹建)
在case 中有没有else 可以用呢?
如果没有,想要有这种功能应该怎么写这个程序呢?
leimin 2003-10-19
  • 打赏
  • 举报
回复
楼上的,你听谁说得:“如果在SQL Server 7.0上面就不能用触发器了!”


MSSQLSERVER在6.5就可以使用TRIGGER了。

try:
update 表
set b= case when a<10 then 1 else 0 end
HenanBoy 2003-10-17
  • 打赏
  • 举报
回复
我感觉还是用触发器比较好呀,就是
declare @a int
select @a=a from inserted
if @a>10
update 表 set b=2 where
else
update 表set b=1 where
qdubit 2003-10-17
  • 打赏
  • 举报
回复
update tablename
set b=case when a<10 then 1 when a>10 then 2 end
qdubit 2003-10-17
  • 打赏
  • 举报
回复
关注!
zjcxc 2003-10-17
  • 打赏
  • 举报
回复
/*
1问
能不能让表自动更改的,就是每当表中的字段a有变化时,字段b就会自己变

可以通过触发器来进行处理:
*/
create trigger t_update on 你的表
AFTER insert,update
as
if update(a)
update 你的表
set b=case when a<10 then 1 when a>10 then 2 end
where a in(select a from inserted)

go
zjcxc 2003-10-17
  • 打赏
  • 举报
回复
要调整的部分说明:
insert into b..bbb --b..bbb ,b为SQL的数据库名,bb为接收数据导入的表名
SourceDB=c:\ --c:\ 是dbf文件的存放目录
select * from [aaa.DBF] --aaa.dbf是dbf的文件名

zjcxc 2003-10-17
  • 打赏
  • 举报
回复
--2.导入foxpro表

insert into b..bbb
select * from
openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\',
'select * from [aaa.DBF]')


xmark23 2003-10-17
  • 打赏
  • 举报
回复
各位,我的问题还没有彻底解决呢,请继续帮助呀!
1问
能不能让表自动更改的,就是每当表中的字段a有变化时,字段b就会自己变
2问
请问 'MSDASQL',还有 [aa.dbf] 都是对应的什么,
例如,我想把 自由表aaa.dbf
导入到 sql里b数据库中的表bbb中,应该怎么写呀?
我在这之前是用程序编写的导入,但是总是有一些错误,例如
对于foxpro 中的自由表中的备注型字段,我一导入就出错,而且导入以后还存在一些字符,如#,用你说的方法导入能解决这个问题吗?
jkljf 2003-10-17
  • 打赏
  • 举报
回复
agree zjcxc(邹建) !!
xyssrz 2003-10-17
  • 打赏
  • 举报
回复
agree up!
zjcxc 2003-10-17
  • 打赏
  • 举报
回复
1.
update tablename
set b=case when a<10 then 1 when a>10 then 2 end


2.导入foxpro表
insert into 表
select * from
openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\',
'select * from [aa.DBF]')
sdhdy 2003-10-17
  • 打赏
  • 举报
回复
update tablename
set b=case when a<10 then 1 when a>10 then 2 end
yujohny 2003-10-17
  • 打赏
  • 举报
回复
perfwell(我就是我)
你这样写不是只能处理一条,呵呵
perfwell 2003-10-17
  • 打赏
  • 举报
回复
update 表
set a=@a where 主键=@主键
if @a>10
update 表 set b=2 where 主键=@主键
else
update 表 set b=1 where 主键=@主键




yujohny 2003-10-17
  • 打赏
  • 举报
回复
update 表
set b= case when a<10 then 1 when a>10 then 2 end

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧