2010-10-04 73 views
0

我使用excel宏从AS400中提取一些数据。在AS400中,这个特定列(Ref)显示20100729000078154,但是当我将它提取到excel时,它将是2.01007E + 16。我需要将20100729000078154作为最终输出。这是我用来提取AS400的信息的宏: -在Excel中转​​换为文本格式

Sub Extract() 

Dim StrSQl As String 

FromA = Format(Sheet1.Range("B3")) 
FromB = Format(Sheet1.Range("B4")) 
FromC = Format(Sheet1.Range("B5")) 
FromD = Format(Sheet1.Range("B6")) 

StrSQl = "select Cno,Itno,Ref from test " 
StrSQl = StrSQl & " where Cno= " & FromA & " and Itno like " & FromB & " and " 
StrSQl = StrSQl & " Ref >= " & FromC & " and Ref <= " & FromD & " " 
StrSQl = StrSQl & " order by Cno " 

con = "Provider=IBMDA400;Data Source=xxx.xxx.xxx.xxx;User Id=yyyyy;Password=zzzzz" 

Set Db = CreateObject("ADODB.Connection") 
Set rs = CreateObject("ADODB.recordset") 
Db.ConnectionString = con 
Db.Open 


rs.Open StrSQl, Db, 3, 3 

Sheet2.Cells(1, 1).CopyFromRecordset rs 

rs.Close 

Set rs = Nothing 
Set cn = Nothing 

End Sub 
+0

是'Ref'是整数还是字符串? – egrunin 2010-10-04 02:04:23

+1

因为20100729000078154在Excel中不是有效的日期格式,所以您可能想要在SQL语句中格式化它(例如yyyy-mm-dd hh:mm:ss)。 – 2010-10-04 02:10:03

回答

4

,如果你只是想栏显示为文本可以前缀一个单引号,像(假设一个单引号字面可以用iSeries SQL中的''表示)...

StrSQl = "select Cno,Itno,CONCAT('''',Ref) as Ref from test " 
+0

它的作品!非常感谢你。 Hv一直在努力寻找正确答案:-) – Bob 2010-10-04 03:54:28