具体代码如下:(在一个库中有一个表tjtz0,在下面的程序当中用SQL语句CREATE了一个新表tjtz1,要做的是 把表tjtz0中所有字段的内容全都导入到表tjtz1中(同时在表tjtz1中新增了一个“总计”求和字段),但总是出现一个错误:我下面的程序运行了之后,表tjtz1中的前两个字段(单位代码,单位名称)的内容没有,打印查看时 都为“NULL”,可是我原来的表tjtz0中的这两个字段都有内容。其他的倒没什么错误,这是为什么呀?向高手请教~)
…………………………
Dim cn As New ADODB.Connection
Dim cm As New ADODB.Command
Dim i As Integer
Dim j As Integer
Dim s As IntegerPrivate Sub Command1_Click()
s = 0
On Error Resume Next
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;PassWord=sa;Initial Catalog=财务管理"
cn.Open
Set cm.ActiveConnection = cn
cm.CommandText = "create table tjtz1(单位代码 char, 单位名称 char,一月份上解经费 decimal,二月份上解经费 decimal,三月份上解经费 decimal,四月份上解经费 decimal,五月份上解经费 decimal,六月份上解经费 decimal,七月份上解经费 decimal,八月份上解经费 decimal,九月份上解经费 decimal,十月份上解经费 decimal,十一月份上解经费 decimal,十二月份上解经费 decimal,总计 decimal)"
On Error Resume Next
cm.Execute
Adodc1.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;PassWord=sa;Initial Catalog=财务管理"
Adodc2.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;PassWord=sa;Initial Catalog=财务管理"
Adodc2.RecordSource = "select * from tjtz1"
Adodc2.Recordset.Delete
Adodc2.Refresh
Adodc1.RecordSource = "select * from tjtz0"
Adodc1.Refresh
Adodc1.Recordset.MoveFirst
Do While Adodc1.Recordset.EOF <> True
Adodc2.Recordset.AddNew
For j = 0 To 13
Adodc2.Recordset.Fields(j).Value = Adodc1.Recordset.Fields(j).Value
Next
For i = 2 To 13
s = s + Adodc2.Recordset.Fields(i).Value
Next i
Adodc2.Recordset.Fields(14).Value = s
Adodc2.Recordset.Update
Adodc1.Recordset.MoveNext
s = 0
Loop
Adodc2.RecordSource = "select * from tjtz1"
Adodc2.Refresh
Set DataGrid1.DataSource = Adodc2
Set DataReport1.DataSource = Adodc2
Command1.Enabled = False
End Sub…………………………………………
…………………………
Dim cn As New ADODB.Connection
Dim cm As New ADODB.Command
Dim i As Integer
Dim j As Integer
Dim s As IntegerPrivate Sub Command1_Click()
s = 0
On Error Resume Next
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;PassWord=sa;Initial Catalog=财务管理"
cn.Open
Set cm.ActiveConnection = cn
cm.CommandText = "create table tjtz1(单位代码 char, 单位名称 char,一月份上解经费 decimal,二月份上解经费 decimal,三月份上解经费 decimal,四月份上解经费 decimal,五月份上解经费 decimal,六月份上解经费 decimal,七月份上解经费 decimal,八月份上解经费 decimal,九月份上解经费 decimal,十月份上解经费 decimal,十一月份上解经费 decimal,十二月份上解经费 decimal,总计 decimal)"
On Error Resume Next
cm.Execute
Adodc1.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;PassWord=sa;Initial Catalog=财务管理"
Adodc2.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;PassWord=sa;Initial Catalog=财务管理"
Adodc2.RecordSource = "select * from tjtz1"
Adodc2.Recordset.Delete
Adodc2.Refresh
Adodc1.RecordSource = "select * from tjtz0"
Adodc1.Refresh
Adodc1.Recordset.MoveFirst
Do While Adodc1.Recordset.EOF <> True
Adodc2.Recordset.AddNew
For j = 0 To 13
Adodc2.Recordset.Fields(j).Value = Adodc1.Recordset.Fields(j).Value
Next
For i = 2 To 13
s = s + Adodc2.Recordset.Fields(i).Value
Next i
Adodc2.Recordset.Fields(14).Value = s
Adodc2.Recordset.Update
Adodc1.Recordset.MoveNext
s = 0
Loop
Adodc2.RecordSource = "select * from tjtz1"
Adodc2.Refresh
Set DataGrid1.DataSource = Adodc2
Set DataReport1.DataSource = Adodc2
Command1.Enabled = False
End Sub…………………………………………
dim strsql as string
cn.execute "truncate table tjtz1" '清空tjtz1表中的记录
strsql=" insert into tjtz1(b1,b2,b3,b4) select a1,a2,a3,a1+a2+a3 as a4 from tjtz0"
cn.execute strsql
应该改为char(n) n为长度
去找一下SQL-Server的帮助
我在SQL server2000建表的时候 设置"*月份上解经费"的时候 把它设置为"decimal"并且给它设置了允许有两位的小数部分...那在我的这个程序中 又如何用CREATE语句把 "*月份上解经费" 的两位小数带上啊
先谢过...
s = s + Adodc2.Recordset.Fields(i).Value
Next i dim strsql as string
strsql=" insert into tjtz1 select *," & s & " from tjtz0"
cn.execute strsql
定点精度和小数位数。使用最大精度时,有效值从 - 10^38 +1 到 10^38 - 1。
p(精度)
指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从 1 到最大精度之间的值。最大精度为 38。
s(小数位数)
指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 p 之间的值。默认小数位数是 0,因而 0 <= s <= p。最大存储大小基于精度而变化。
不过问题还存在啊。。tjtz0字段中的小数部分 还是转换不过来呀?我这么写是哪个地方出了问题呀?