| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3974 人关注过本帖
标题:求助,读取文本写入数据库
只看楼主 加入收藏
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 
       If Split(0) > 655 Then 'Layer的最小值-1 ,或者可能的 TgtID 最大值
           iLayer = sList(0)          '取 Layer
        Else
           iTgtID = sList(0)
      ElseIf Split(0) = -666666# Then     '段结束
         layer = 0              '置段标记
         tgtid = 0
      ElseIf Split(0) = -999999 Then  '文件结束
         Flag = 1
      End If

这段不对

我是用的 IF .. THEN   .. elseif  ..  else   ... end if
IF 块结构,
在第一个  elseif 前面不能再出现 ELSE

你分析一下各种情况,或者跟踪一下各前几行的这个数组的值想一想,应该放哪个位置

------------------------
'变量定义,建议统一放到代码前
Dim db As Database
Dim iTB As TableDef
'Dim tb2 As TableDef
Dim rs As Recordset
'Dim rs2 As Recordset

'打开数据库,放循环外。按理来说,一个程序只需要打开一次,然后每次都只引用该连接就是了
Set db = OpenDatabase(accessFile)                 '打开数据库
Set rs1 = db.OpenRecordset("MainInfo") '打开数据表

-----------------
'你在本过程中打开了数据连接,那就记得要关掉
db.close

============
未经测试,只是静态看了一下。
有连接,执行SQL 的命令:
db.execute  sql
这样直接执行SQL命令,无返回值,不需要 rs 对象






[此贴子已经被作者于2017-11-14 21:12编辑过]


授人于鱼,不如授人于渔
早已停用QQ了
2017-11-14 21:10
huihuihuiol
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-11-14
收藏
得分:0 
回复 8楼 风吹过b
我试着去运行这个程序,就是在循环的第一次和第二次时数据库的表格的X Y都是0,
最终程序是出错的。
我的理解大概就是您这样读取数据使得每读一块都会多生成了两行X  Y是0的数据
2017-11-14 21:31
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 
你说的这个问题,我没注意到,那就是 保存时,对 X Y 的值也要判断一下,只有这二个值全部不为空时才能保存。
或者再加一个标志变量,
循环开启,该变量为0
当X,Y 给值时,该变量为1
只有该变量为1时,同时 Layer  TgtID 不为零,才保存。


授人于鱼,不如授人于渔
早已停用QQ了
2017-11-14 21:38
huihuihuiol
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-11-14
收藏
得分:0 
回复 11楼 风吹过b
好的,谢谢你
我应经调了
2017-11-14 21:39
huihuihuiol
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-11-14
收藏
得分:0 
回复 13楼 风吹过b
好的,我试试,
读取这个的目的就是,在每一块中的layer和tgtid都是一样的而X  Y就是段头下面的那些坐标值

我刚刚学的VB 然后老师要求做这样的一个课程设计有很多不懂的,还望您不要嫌弃我的麻烦
2017-11-14 21:43
huihuihuiol
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-11-14
收藏
得分:0 
回复 9楼 风吹过b
您好,这是我写的程序,但是执行完了之后数据库中没有添加任何的记录
可以帮我看看吗?
Private Sub Command1_Click()
Dim DX() As Double
Dim DY() As Double
Dim TgtID As Long
Dim Layer As Integer
'Dim count As Long
Dim db As Database
'Dim iTB As TableDef
Dim rs As Recordset
Dim s As String
Dim sList() As String

With CommonDialog1
    .Filter = "数据文件(*.*)|*.*"       '设置选择文件的格式
    .ShowOpen
End With
dataFile = CommonDialog1.FileName

With CommonDialog1
    .Filter = "数据库*.mdb)|*.mdb"       '设置选择文件的格式
    .ShowOpen
End With
accessFile = CommonDialog1.FileName
Set db = OpenDatabase(accessFile)     '打开数据库
Set rs = db.OpenRecordset("MainInfo") '打开数据表

ReDim Preserve sList(0) As String
sList(0) = "-666666.0"
ReDim Preserve sList(1) As String
sList(1) = "-666666.0"
Open dataFile For Input As #1 '打开原始数据

Do
   
   
   If sList(0) = -666666# And sList(1) = -666666# Then
      Line Input #1, s
      sList = Split(s, ",")
      If sList(0) = -999999 And sList(1) = -999999 Then Exit Do
      TgtID = sList(0)
      Line Input #1, s
      sList = Split(s, ",")
      Layer = sList(0)
      
      i = 0
      Do Until sList(0) = -666666# And sList(1) = -666666#
         Line Input #1, s
         sList = Split(s, ",")
         ReDim Preserve DX(i) As Double
         ReDim Preserve DY(i) As Double
         DX(i) = sList(0)
         DY(i) = sList(1)
         i = i + 1
      Loop
      ReDim Preserve DX(UBound(DX) - 1) As Double
      ReDim Preserve DY(UBound(DY) - 1) As Double
      
         If sList(0) = -666666# And sList(1) = -666666# Then
'            count = 0
            For i = 0 To UBound(DX) - 1
               rs.AddNew
               rs.Fields(1).Value = DX(i)
               rs.Fields(2).Value = DY(i)
               rs.Fields(3).Value = TgtID
               rs.Fields(4).Value = Layer
               Refresh
'               rs.Update
'               count = count + 1
            Next i
'            rs.Update
'         Exit Do
         End If
'     Loop
   End If
Loop
'rs.Update
rs.Close
db.Close
Close #1

End Sub
2017-11-16 10:23
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 
               rs.AddNew                           '新增一条记录
               rs.Fields(1).Value = DX(i)          '记录内容
               rs.Fields(2).Value = DY(i)
               rs.Fields(3).Value = TgtID
               rs.Fields(4).Value = Layer
               Refresh                             '刷新,放弃新增的内容
'               rs.Update                          '更新,保存新增的内容

我注释了你关键代码,你看一下问题出在哪

授人于鱼,不如授人于渔
早已停用QQ了
2017-11-16 10:27
huihuihuiol
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2017-11-14
收藏
得分:0 
回复 17楼 风吹过b
恩恩,问题我已经解决了,谢谢你
2017-11-16 15:41
longyi_x
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-7-17
收藏
得分:0 
把您的程序传一份可以吗,万分感谢
2019-11-05 21:26
快速回复:求助,读取文本写入数据库
数据加载中...
 
   



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

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