当前位置: 代码迷 >> VFP >> 批量更改数据,该如何解决
  详细解决方案

批量更改数据,该如何解决

热度:8917   发布时间:2013-02-26 00:00:00.0
批量更改数据
我有一个表,表有准考证号和姓名两个字段,相同准考证号只有第一个有姓名,如何将相同准考证号下没有姓名一块添加上姓名,请求各位帮忙解决

------解决方案--------------------------------------------------------
这最好是写一段小程序来做,
先将表按准考号索引
zkzh= " "
xm= " "
scan
if zkzh#考号字段
zkzh=考号字段
xm = 姓名字段
else
  repl 姓名字段 with xm
endif
endscan
------解决方案--------------------------------------------------------
请试一试(vfp9.0):

CREATE CURSOR Temp (ID VARCHAR(4),Name VARCHAR(8))

INSERT INTO Temp (ID,Name) VALUES ( "1001 ", "A ")
INSERT INTO Temp (ID,Name) VALUES ( "1002 ", "B ")
INSERT INTO Temp (ID,Name) VALUES ( "1003 ", "C ")
INSERT INTO Temp (ID,Name) VALUES ( "1001 ", " ")
INSERT INTO Temp (ID,Name) VALUES ( "1002 ", " ")
INSERT INTO Temp (ID,Name) VALUES ( "1003 ", " ")

SELECT Temp
BROWSE

UPDATE Temp SET Name = A.Name ;
FROM (SELECT DISTINCT ID,Name FROM Temp WHERE !EMPTY(Name)) A ;
WHERE Temp.ID == A.ID AND EMPTY(Temp.Name)

BROWSE


------解决方案--------------------------------------------------------
VFP9:
UPDATE TT FROM ;
(SELECT 准考证号,姓名 FROM TT GROUP BY 准考证号,姓名 WHERE !ISNULL(姓名);
AND LEN(TRIM(姓名))> 0) B;
WHERE TT.准考证号=B.准考证号 SET TT.姓名 =B.姓名

------解决方案--------------------------------------------------------
VFP9.0:

SELECT 准考证号,姓名 INTO CURSOR TEMP1 FROM 原表名 WHERE !ISNULL(姓名) AND LEN(TRIM(姓名))> 0
UPDATE 原表名 SET 姓名=TEMP1.姓名 FROM TEMP1 WHERE 原表名.准考证号=TEMP1.准考证号
------解决方案--------------------------------------------------------
VFP9.0以下:

SELECT 准考证号,姓名 INTO CURSOR TEMP1 FROM 原表名 WHERE !ISNULL(姓名) AND LEN(TRIM(姓名))> 0
SELECT TEMP1
SCAN
UPDATE 原表名 SET 姓名=TEMP1.姓名 WHERE 原表名.准考证号=TEMP1.准考证号
ENDSCAN
  相关解决方案