| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 498 人关注过本帖, 1 人收藏
标题:数据库读取和写入的问题ACCESS
取消只看楼主 加入收藏
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
结帖率:87.21%
收藏(1)
已结贴  问题点数:20 回复次数:3 
数据库读取和写入的问题ACCESS
表格如下:
        字段1          字段2          字段3            字段4            字段5
          A              B              C                D      
          A              B              C                D      
          A              B              C                D  
          A              B              C      
          A              B               
如上表格;
操作界面如下:  看附件     

我想在MSHFlexGrid1表格中只显示其中一个字段下的所有记录,比如字段4,字段1和其他的都不显示,这个好像问题不大
最让我伤脑筋的是,我想在字段4中增加一个单元格的值,比如增加一个D变成
        字段1          字段2          字段3            字段4            字段5
          A              B              C                D      
          A              B              C                D      
          A              B              C                D  
          A              B              C                D       <===========这个是我要的效果
          A              B               
这个怎么处理?我知道数据库在增加记录的时候是横向写入的,我只能做到下面这个效果
        字段1          字段2          字段3            字段4            字段5
          A              B              C                D      
          A              B              C                D      
          A              B              C                D  
          A              B              C               
          A              B               
                                                         D
可是这个不是我要的效果啊!我的字段是随时需要增加和减少的
这个怎么整?高手指点一下!有的话给几个代码看看!!先谢了啊!
搜索更多相关主题的帖子: 表格 
2012-11-16 22:28
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
就是在数据库增加一条记录,数据库记录的方式是横的算一条,分别显示一条记录的各个分项
难道不是这样的吗?
比如我要记录:性别=男,年龄=20,姓名=李
在数据库中的记录如下:
性别   年龄     姓名
      20      
      19      
如果其中年龄没有是空值那么记录下来的结果是
性别   年龄     姓名
      20     
             
如果我的记录是只有一个姓名,增加记录后就变成
性别   年龄     姓名
      20      
      19      
                 
如果我想在第三条记录增加一个年龄变成   
性别   年龄     姓名
      20      
      19      
        12          《==============我需要的效果
这个该怎么做,数据库的字段在程序运行后会改变(增加一个字段或减少一个字段)
比如如下变化
性别   年龄     姓名    成绩
怎么弄?


[ 本帖最后由 wxflw 于 2012-11-17 17:34 编辑 ]

学习--------------学习-------------------学习--------------------!!
2012-11-17 17:33
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
没有哪位师傅有耗电的方法吗?我自己瞎弄了一个,帮看看有什么更好的方法,我的贴出来大家看看!
Private Sub Command3_Click()'这个是添加按钮
Dim A
Dim B
If Text1.Text = "" Then
     MsgBox "请输入名称!", 32, "系统"
     Text1.SetFocus
     Exit Sub
End If
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88 "
    sql = "select " & Combo1.Text & " from bk "
    rs.Open sql, cn, 3, 3
'=======================
'循环对比是否已有记录
         A = Combo1.Text
         B = Text1.Text
      Do While Not rs.EOF
         If Text1.Text = rs.Fields(A) & "" Then
            A = 1    '设置一个变量标记是否从循环退出
            MsgBox "已有记录!", , "系统提示"
            Exit Do
         End If
            rs.MoveNext
      Loop
      If A = 1 Then   '如果循环退出的
         GoTo XXX      '结束
      End If
'=======================
rs.MoveFirst
'循环到空值将空值改为添加的值
   Do While Not rs.EOF
      If rs.Fields(A) & "" = "" Then
             rs.Fields(A) = B
             rs.Update
             A = 1
             Exit Do
      End If
            rs.MoveNext
  Loop
     If A = 1 Then   '如果存循环退出的
         GoTo XXX     '结束
      End If
 '===============================
 rs.MoveFirst
 '再次循环,如果还没有记录就说明上面没有空值可以改变,那么直接新建
 Do While Not rs.EOF
       If Text1.Text = rs.Fields(A) & "" Then
            A = 1    '设置一个变量标记是否从循环退出
            MsgBox "已有记录!", , "系统提示"
            Exit Do
         End If
            rs.MoveNext
            If rs.EOF Then
               rs.AddNew
               rs.Fields(A) = B
               rs.Update
               A = 1
               MsgBox "添加成功!", , "系统提示"
               Exit Do
            End If
  Loop
     If A = 1 Then   '如果存循环退出的
         GoTo XXX     '结束
      End If
 '===============================
XXX:
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88 "
    sql = "select " & Combo1.Text & " from bk "
    rs.Open sql, cn, 3, 3
    If rs.RecordCount > 0 Then
       Set MSHFlexGrid1.DataSource = rs
    End If
Text1.Text = ""
Text1.SetFocus
----------------------------------------------------------------------
End SubPrivate Sub Command4_Click()’这个是删除
If Text1.Text = "" Then
  MsgBox "无此记录!", , "系统提示"
  Text1.SetFocus
  Exit Sub
End If
If Text1.Text <> "" Then
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88 "
    sql = "select " & Combo1.Text & " from bk "
    rs.Open sql, cn, 3, 3
    '=============================
    A = Combo1.Text
    B = Text1.Text
      Do While Not rs.EOF
         If Text1.Text = rs.Fields(A) & "" Then
               myval = MsgBox("确定删除此记录吗?", vbYesNo, "系统")
            If myval = vbYes Then
                 rs.Fields(A) = ""'不直接删除,只是把值变为空,删除的话,一行中的所有记录就会全部删除,因为我只操作单个单元格。
                 rs.Update
            End If
              A = 1 '设置一个变量标记是否从循环退出
              MsgBox "删除成功!", , "系统提示"
            Exit Do
         End If
            rs.MoveNext
            If rs.EOF Then
            A = 1
               MsgBox "没有这条记录!", , "系统提示"
               Exit Do
            End If
      Loop
      If A = 1 Then   '如果存循环退出的
         GoTo XXX      '结束
      End If
    '=============================
   
XXX:
   
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88 "
    sql = "select " & Combo1.Text & " from bk "
    rs.Open sql, cn, 3, 3
    If rs.RecordCount > 0 Then
       Set MSHFlexGrid1.DataSource = rs
    End If
    Text1.Text = ""
    Text1.SetFocus
End If
End Sub
------------------------------------------
’今天发现个以前没有找到的答案,自己想到了
'循环查询记录集一列中的所有记录加载到combo1中
    If cn.State = adStateOpen Then cn.Close
    If rs.State = adStateOpen Then rs.Close
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88 "
    sql = "select 区域 from qy "
    rs.Open sql, cn, adOpenForwardOnly, adLockBatchOptimistic
    Do While Not rs.EOF
     If rs.Fields(Combo1.Text) <> "" Then  '刚想到的!刚才在数据库中把值变成空值的时候想到的,以前加载的时候连空格都加载了,
                                           '难看死了,现在加了个判断的空值就不加载了。
         Combo1.AddItem rs.Fields("区域") & ""
     end  if
    rs.MoveNext
    Loop
有好的建议请告诉我以啊!谢谢了
收到的鲜花
  • Artless2012-11-19 12:44 送鲜花  5朵   附言:原创内容

学习--------------学习-------------------学习--------------------!!
2012-11-18 19:38
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
是啊!可以满足我的需要了!有同类的好点的代码吗?持续关注啊!

学习--------------学习-------------------学习--------------------!!
2012-11-19 07:14
快速回复:数据库读取和写入的问题ACCESS
数据加载中...
 
   



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

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