急 Excel两表联合删除指定行!!!

Eagle_ice 2010-01-07 09:08:08
问题是这样的:
现有Excel表A、表B,表A有6个字段,表B有7个字段。
表A为某年度完成指标任务,表B为总的任务,现要做的操作是
将表A中完成的任务指标在表B中删除,譬如表A中TeleNum代表一个用户指标,那么就在表B中
找到这个用户删除该用户对应行,表B中其他数据不变(其实可以手工删除,就是在表A中Copy一个TeleNum,到表B中查找,若有则删除相应行),我将数据导入到SQL Server中,在合并时总是出现从数据类型 nvarchar 转换为 float 时出错。

Excel表A

TeleNum 进货时间 进货数量 是否完成

123456 -- -- 是

Excel表B

TeleNum 进货时间 进货数量 是否完成

123456 -- -- 是

234567 -- -- 否

操作后的Excel表B为

TeleNum 进货时间 进货数量 是否完成

234567 -- -- 否

请大家帮忙搞定,举例测试通过,谢谢!
...全文
147 点赞 收藏 13
写回复
13 条回复
Eagle_ice 2010年01月08日
类型统一后
通过

select * from newtable2 where TeleNum in
(select TeleNum from newtable where newtable2.TeleNum = newtable.TeleNum)

查询结果为零?这根nvarchar的大小有关?
回复 点赞
Eagle_ice 2010年01月08日
[Quote=引用 11 楼 ziye1987113 的回复:]
导入的时候  在要合并的行中 选定  然后在单元格格式里把属性改成文本  然后再导到数据库里去 就不会出错了
[/Quote]

就是不行啊 我的删除语句是这样的:


delete from newtable2 where TeleNum in
(select TeleNum from newtable where newtable2.TeleNum = newtable.TeleNum)


Error:从数据类型 nvarchar 转换为 float 时出错。

如何能查看某一字段数据类型?

回复 点赞
ziye1987113 2010年01月08日
导入的时候 在要合并的行中 选定 然后在单元格格式里把属性改成文本 然后再导到数据库里去 就不会出错了
回复 点赞
hzvcan 2010年01月08日
用VBA吧
回复 点赞
Eagle_ice 2010年01月08日
全部设置成文本,问题依旧‘从数据类型 nvarchar 转换为 float 时出错。’

Excel表A

序号 TeleNum 2010年基数 进帐金额 包年种类 办理日期

1 6631001 276 280 本地+长途 20091226
2 6631005 204 204 本地+长途 20091226
3 6636380 228 230 本地+长途 20091226

Excel表B

TeleNum 2010年基数 进帐金额 办理日期 录入日期 某字段 某字段

6631001 198 192 20090116 20091231 192 0
6631002 198 228 20090118 20091231 228 0
6631005 198 198 198 0

表A中是已完成记录,表B是总任务,即利用SQL语句删除表B中已完成的记录(来自表A)
回复 点赞
dawugui 2010年01月07日
你导入的时候,把这个字段设置为nvarchar型或varchar型,不要用数值型的类型.
因为你的字段中存在不合法的数值.例如:30da09i等.
回复 点赞
--小F-- 2010年01月07日
SQL SERVER 和EXCEL的数据导入导出
1、在SQL SERVER里查询Excel数据:
-- ======================================================
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
SELECT *
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

2、将Excel的数据导入SQL server :
-- ======================================================
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
实例:
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

3、将SQL SERVER中查询到的数据导成一个Excel文件
-- ======================================================
T-SQL代码:
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
参数:S 是SQL服务器名;U是用户;P是密码
说明:还可以导出文本文件等多种格式
实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
在VB6中应用ADO导出EXCEL文件代码:
Dim cn As New ADODB.Connection
cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
------------------------------------------------------------------------------------------------

4、在SQL SERVER里往Excel插入数据:
-- ======================================================
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)

T-SQL代码:
INSERT INTO
OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]
(bestand, produkt) VALUES (20, 'Test')

回复 点赞
--小F-- 2010年01月07日
SQL SERVER 和EXCEL的数据导入导出
1、在SQL SERVER里查询Excel数据:
-- ======================================================
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
SELECT *
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

2、将Excel的数据导入SQL server :
-- ======================================================
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
实例:
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

3、将SQL SERVER中查询到的数据导成一个Excel文件
-- ======================================================
T-SQL代码:
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
参数:S 是SQL服务器名;U是用户;P是密码
说明:还可以导出文本文件等多种格式
实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
在VB6中应用ADO导出EXCEL文件代码:
Dim cn As New ADODB.Connection
cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
------------------------------------------------------------------------------------------------

4、在SQL SERVER里往Excel插入数据:
-- ======================================================
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)

T-SQL代码:
INSERT INTO
OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]
(bestand, produkt) VALUES (20, 'Test')

回复 点赞
bancxc 2010年01月07日
他们的意思是在excel中先设置成文本再倒入

不知道理解对了没[Quote=引用 3 楼 fredrickhu 的回复:]
excel导入之间全部设置成文本格式试下
[/Quote]
回复 点赞
Eagle_ice 2010年01月07日
1楼跟3楼的改成文本 是怎么回事?

有没有通过SQL 语句搞定的

我是通过SQL语句将Excel数据导入SQL Server中的
回复 点赞
--小F-- 2010年01月07日
excel导入之间全部设置成文本格式试下
回复 点赞
ababababab 2010年01月07日
每天回帖即可获得10分可用分!
回复 点赞
让你望见影子的墙 2010年01月07日
把execl 中的数据类型改为 文本
回复 点赞
发动态
发帖子
应用实例
创建于2007-09-28

1.1w+

社区成员

6.8w+

社区内容

MS-SQL Server 应用实例
社区公告
暂无公告