标题:将MSFlexGrid中的数据导入到sql中,并判断重复的数据不导入。(已解决,见10 ...
取消只看楼主
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
 问题点数:0 回复次数:5 
将MSFlexGrid中的数据导入到sql中,并判断重复的数据不导入。(已解决,见10楼)
如题,初学者,不太会定义和使用MSFlexGrid的movefirst和movenext方法,请大家帮忙看看我这样写的对不对?不行的话应该怎么修改?请大家指点一下。
Private Sub Command4_Click()
Dim cnn As New ADODB.Connection
Dim rsTemp As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset
Dim Djls As Integer
Dim InserStr As String
Dim i As Long
Djls = 0
'打开目标数据库的连接,准备导入数据
cnn.Open "Provider=SQLOLEDB.1;User ID=sa;pwd=" y69m10d17 ";Initial Catalog=Northwind;Data Source=" 192.168.1.38 ""
'main是后台数据库的表
' rs1.Open "main", cn2, adOpenDynamic, adLockBatchOptimistic, adCmdTable
'循环插入数据
If Recordset.RecordCount > 0 Then
Recordset.MoveFirst '我不知道怎么来定义和使用flexGrid的指针,这样写对不对?
With MSFlexGrid1
.Row = 1
While Not Recordset.EOF
If .TextMatrix(i, 3) = "JF" then
For i = 1 To .Rows - 1
If isnull (Recordset("CODE"))= True then
Msgbox("CODE不能为空,请检查第『"+CStr(Djls+1)+"』行记录")
EXIT sub
End if
If isnull (Recordset("时间"))= True then
Msgbox("时间不能为空,请检查第『"+CStr(Djls+1)+"』行记录")
EXIT sub
End if
rsTemp.Open "select top 1 * from main where trim(tmdata)="trim(Recordset("CODE")",cnn, adOpenDynamic, adLockReadOnly
'判断记录没有重复则插入表中
If rsTemp.EOF Then
InserStr = "insert into main(tmdata,date) Values ( '" + trim_(Recordset("CODE") + "'" + ",'" + trim(Recordset("时间")+ "')"
cnn.Execute (InserStr)
End If
Recordset.MoveNext
rsTemp.Close
Next i
End If
End With
Wend
End If
cnn.Close
Total_J1s.caption="共有『"+CStr(Djls)+"』记录数被导入"
End Sub

[此贴子已经被作者于2007-9-17 12:58:40编辑过]

搜索更多相关主题的帖子: MSFlexGrid sql 数据 判断 
2007-09-16 21:31
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
得分:0 
不好意思,可能这段有点长,没有顾及到大家都很忙。我不太会使用MSFlexGrid的movefirst和movenext方法,网上的资料好像也比较少,能否大家举个实例看下。说实话,我写的这段代码我自己都觉得有些地方不太对,调试的话可能调试半天也不一定通过。这是我第一次用vb写代码,所以才想请大家先指点一下了。
2007-09-17 08:34
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
得分:0 
我自己有同感,但是不知道怎么改?
2007-09-17 09:28
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
得分:0 
刚才我测试了下,下面的语句总是提示错误,这个应该怎么修改?
rsTemp.Open "select top 1 * from main where trim(tmdata)=trim(Recordset("CODE"))",cnn, adOpenDynamic, adLockReadOnly
'判断记录没有重复则插入表中
If rsTemp.EOF Then
InserStr = "insert into main(tmdata,date) Values ( '" + trim_(Recordset("CODE") + "'" + ",'" + trim(Recordset("时间")+ "')"
是不是不能这样使用?--Recordset("CODE")
还是我写的有问题?
2007-09-17 09:42
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
得分:0 

上面的两句已经做了修改,可以通过了。如下:
rsTemp.Open "select top 1 * from main where tmdata='" & MSFlexGrid1.TextMatrix(i, 1) & "'", cnn, adOpenDynamic, adLockReadOnly
'判断记录没有重复则插入表中
If rsTemp.EOF Then
InserStr = "insert into main(tmdata,date) Values ( '" + Trim(MSFlexGrid1.TextMatrix(i, 1)) + "'" + ",'" + Trim(MSFlexGrid1.TextMatrix(i, 2)) + "')"
谢谢simpson。

2007-09-17 10:21
mohan123
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-9-10
得分:0 
已经全部调试通过了,当中发现了不少问题,尤其是自己的逻辑习惯不好,以后要多加注意。现把调试通过的代码附上,希望能给别人提供一个简单的例子:
Private Sub Command4_Click()
Dim cnn As New ADODB.Connection
Dim rsTemp As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset
Dim Djls As Integer
Dim InserStr As String
Dim i As Long
Djls = 0
'打开目标数据库的连接,准备导入数据
cnn.Open"Provider=SQLOLEDB.1;User ID=sa;pwd=123456;Initial Catalog=Northwind;Data Source= localhost ;"
'main是后台数据库的表
rs1.Open "main", cnn, adOpenDynamic, adLockBatchOptimistic, adCmdTable
'循环插入数据
With MSFlexGrid1
'.Row = 1
For i = 1 To .Rows - 1
If .TextMatrix(i, 3) = "JF" Then
If IsNull(.TextMatrix(i, 1)) = True Then
MsgBox ("CODE不能为空,请检查第『" + CStr(Djls + 1) + "』行记录")
Exit Sub
End If
If IsNull(.TextMatrix(i, 2)) = True Then
MsgBox ("时间不能为空,请检查第『" + CStr(Djls + 1) + "』行记录")
Exit Sub
End If
rsTemp.Open "select top 1 * from main where tmdata='" & MSFlexGrid1.TextMatrix(i, 1) & "'", cnn, adOpenDynamic, adLockReadOnly
'判断记录没有重复则插入表中
If rsTemp.EOF Then
InserStr = "insert into main(tmdata,date) Values ( '" + Trim(MSFlexGrid1.TextMatrix(i, 1)) + "'" + ",'" + Trim(MSFlexGrid1.TextMatrix(i, 2)) + "')"
cnn.Execute (InserStr)
Djls = Djls + 1
End If
rsTemp.Close
End If
Next i
End With
cnn.Close
Total_J1s.Caption = "共有『" + CStr(Djls) + "』记录数被导入"
End Sub

2007-09-17 12:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-170429-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.040780 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved