我有一个关于网站数据的Excel工作表,并尝试将其传输到Access数据库中的Site_Table(Office 2007)。除了作为站点地理坐标的两列之外,我可以传输所有内容。
第一个示例在循环工作表行的情况下正常工作;
For i = 2 To numSheetRows
strSearchMatch = ws.Cells(i, n).Value
If Len(strSearchMatch) <> 0 Then
intSearchMatch = CLng(strSearchMatch)
With adoRecSet
.Open "Select UPRN, Site_Name, Site_Address, Site_Category, Site_VMB,
Site_Retain_WAN " & _
"FROM Site_Table WHERE Site_Id = " & intSearchMatch & ";", _
connDB, adOpenKeyset, adLockOptimistic
.Fields("UPRN").Value = ws.Cells(i, 1).Value
.Fields("Site_Name").Value = ws.Cells(i, 16).Value
.Fields("Site_Address").Value = ws.Cells(i, 17).Value
.Fields("Site_Category").Value = ws.Cells(i, 15).Value
.Fields("Site_VMB").Value = ws.Cells(i, 2).Value
.Fields("Site_Retain_WAN").Value = ws.Cells(i, 11).Value
.Update
.Close
End With
End If
Next i
但我需要包含X和Y坐标的列。令我困惑的是,相关列的格式设置为&#34; General&#34;,但下图中突出显示的单元格在公式栏中的值为245946.693280609。
我尝试将值转换为小数,其中包含&#34; CDec&#34;并使用变体。在数据库中,我将字段设置为十进制到4位小数,但是当我尝试输入xcoord值时,如下例所示,我收到错误&#34;十进制值的缩放导致数据截断&#34;。我可以将数据库字段更改为文本并且它可以工作,但基本上我如何以电子表格中显示的方式将工作表中的值提供给数据库?
For i = 2 To numSheetRows
strSearchMatch = ws.Cells(i, n).Value
If Len(strSearchMatch) <> 0 Then
intSearchMatch = CLng(strSearchMatch)
With adoRecSet
.Open "Select UPRN, Site_Name, Site_Address, Site_Category, Site_VMB,
Site_Retain_WAN, Site_X_Coord " & _
"FROM Site_Table WHERE Site_Id = " & intSearchMatch & ";", _
connDB, adOpenKeyset, adLockOptimistic
.Fields("UPRN").Value = ws.Cells(i, 1).Value
.Fields("Site_Name").Value = ws.Cells(i, 16).Value
.Fields("Site_Address").Value = ws.Cells(i, 17).Value
.Fields("Site_Category").Value = ws.Cells(i, 15).Value
.Fields("Site_VMB").Value = ws.Cells(i, 2).Value
.Fields("Site_Retain_WAN").Value = ws.Cells(i, 11).Value
.Fields("Site_X_Coord").Value = ws.Cells(i, 23).Value
.Update
.Close
End With
End If
Next i
答案 0 :(得分:0)
AJF,
如果你使用ws.Cells(i,23)。文字而不是Cell(i.23).Value。
例如: A1 = 100/33(3,0303030303030303030303 ......)
范围(&#34; A1&#34;)。NumberFormat =&#34; 0.0000&#34; MsgBox&#34;价值是&#34; &安培;单元格(2,4)。文本