VB对SQL数据表已有的记录添加字段和数据

时间:2021-10-05 12:20:32
作为菜鸟的我想向一个表中已有的数据添加字段和数据,字段是添加了,但数据不是在原有的记录下面添加,而是另起一个行的记录。

例如: 在表1中原来有一个字段A的,表中有5条记录,我向在表中添加字段B并添加数据到字段B中,而记录应该还是5条,但我在写了下面的代码后,发现字段是添加了,但是变成了10条记录前5条只有A有数据B是空的,后5条只有B有数据A是空的,请高手们指教,谢谢!

 For ZDC = 1 To CK //循环,把出现在列表中的每一个字段在数据表中的数据都导入到临时表TMP中
          ZD = ListX.List(ZDC - 1)
          stRopen = "select " & ZD & " into TMP from " & rst_table.Fields("name") & "
          stInser = "insert into TMP (" & ZD & ") select " & ZD & " from " & rst_table.Fields("name") & ""
          stAlt = "alter table TMP ADD " & ZD & " varchar(100)null;"
          rSt.Open "select * from dbo.sysobjects where name='TMP'", cNn, adOpenStatic, adLockReadOnly
          If rSt.EOF = True Then
             rstmp.Open stRopen, cNn, adOpenStatic, adLockReadOnly//创建一个临时表TMP并从表(rst_table.Fields("name"))导入相应数据
             rSt.Close
             
          Else
              rstmp.Open stAlt, cNn, adOpenStatic, adLockReadOnly //添加字段
              rstmp.Open stInser, cNn, adOpenStatic, adLockReadOnly//为字段添加数据
            
          End If
              
 
     Next ZDC

13 个解决方案

#1


添加B列数据时,直接Update就行,不要使用Insert插入!

#2


alter table TableName ADD ColumnName varchar(100) null
    Update TableName Set ColumnName ='XXX'         

#3


高手,不用insert不行,如果用select系统会提示TMP表已存在,所有迫不得已才用insert为字段B添加数据

#4


引用 3 楼 fbbomber 的回复:
高手,不用insert不行,如果用select系统会提示TMP表已存在,所有迫不得已才用insert为字段B添加数据

不太明白什么意思啊!

#5


insert into a(a,b,c) select d,e,f from b
前后字段一一对应试试

#6


引用 4 楼 jwdream2008 的回复:
引用 3 楼 fbbomber 的回复:
高手,不用insert不行,如果用select系统会提示TMP表已存在,所有迫不得已才用insert为字段B添加数据

不太明白什么意思啊!


我意思是 A字段是用select into的语句来导入数据的,而B字段如果同样用select into,运行时就会出错,因此我只能用insert into来为字段B添加数据
或者,高手指点一下用什么语句为字段B添加数据,数据源是宁外一个表"&rst_table.Fields("name")&"

#7


引用 5 楼 fredrickhu 的回复:
SQL codeinsertinto a(a,b,c)select d,e,ffrom b
前后字段一一对应试试


高手,我代码里的字段是变量来,无法实现列出

#8


HELP ME

#9


??

#10


高手们去哪喇?

#11


stInser = "update TMP set " & ZD & " = (select " & ZD & " from " & rst_table.Fields("name") & ")"  

#12


结帖率: 0.00% 影响大家的回答积极性

#13


写法很混乱

#1


添加B列数据时,直接Update就行,不要使用Insert插入!

#2


alter table TableName ADD ColumnName varchar(100) null
    Update TableName Set ColumnName ='XXX'         

#3


高手,不用insert不行,如果用select系统会提示TMP表已存在,所有迫不得已才用insert为字段B添加数据

#4


引用 3 楼 fbbomber 的回复:
高手,不用insert不行,如果用select系统会提示TMP表已存在,所有迫不得已才用insert为字段B添加数据

不太明白什么意思啊!

#5


insert into a(a,b,c) select d,e,f from b
前后字段一一对应试试

#6


引用 4 楼 jwdream2008 的回复:
引用 3 楼 fbbomber 的回复:
高手,不用insert不行,如果用select系统会提示TMP表已存在,所有迫不得已才用insert为字段B添加数据

不太明白什么意思啊!


我意思是 A字段是用select into的语句来导入数据的,而B字段如果同样用select into,运行时就会出错,因此我只能用insert into来为字段B添加数据
或者,高手指点一下用什么语句为字段B添加数据,数据源是宁外一个表"&rst_table.Fields("name")&"

#7


引用 5 楼 fredrickhu 的回复:
SQL codeinsertinto a(a,b,c)select d,e,ffrom b
前后字段一一对应试试


高手,我代码里的字段是变量来,无法实现列出

#8


HELP ME

#9


??

#10


高手们去哪喇?

#11


stInser = "update TMP set " & ZD & " = (select " & ZD & " from " & rst_table.Fields("name") & ")"  

#12


结帖率: 0.00% 影响大家的回答积极性

#13


写法很混乱