Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请教一个有难度的问题

樊晓明  发表于:2010-06-20 20:15:11  
复制

怎样把文本框内的内容转化为特定的一个表记录

点击下载此附件

 

Top
钱玉炜 发表于:2010-06-21 13:10:39

提问的时候尽量把问题描述清楚



陈福祥 发表于:2010-06-21 14:10:40

觉得有点无所事事,没事找事干,呵呵……

点击下载此附件



萧云 发表于:2010-06-21 14:21:44

网上找到一段代码 ,简单改编一下,请参考理解

 

Private Sub Command5_Click()             '转换按钮

Dim lngN As Long, strT As String, strTmp As String
    Dim lngL As Long, lngM As Long
    Dim n As Long
    lngL = UBound(Split(谈话记录, vbCrLf))
   
    For lngN = 0 To lngL
       
        strTmp = Split(谈话记录, vbCrLf)(lngN)
        lngM = Len(strTmp)
       
        For n = 1 To lngM Step 30

                DoCmd.SetWarnings False
                DoCmd.RunSQL "INSERT INTO 谈话明细 (谈话记录) VALUES ('" & Mid(strTmp, n, 30) & "')"
                DoCmd.SetWarnings True

        Next
       
    Next
    
   

End Sub



萧云 发表于:2010-06-21 14:28:58

刚才看了一下 陈福祥 的解决方法。

是根据“问”和“答”关键字来分隔的,看来也不错。 学习一下思路。



张平 发表于:2010-07-07 09:03:14

还有一个问题:即使按照一定的符数完成分行后,但由于有时存在混合字符(一行里有汉字和英文、或阿拉伯数字相混合)的原因,造成每行内容显示的实际长度有很大差别,有碍观瞻,如何解决这一难题,再次请高手赐教!



萧云 发表于:2010-07-07 14:36:06

Private Sub Command5_Click()             '转换按钮单击事件

Dim lngN As Long, strT As String, strTmp As String
    Dim lngL As Long, lngM As Long
    Dim n As Long
    Dim ChineseStrLen As Long   '中文字符的长度
    Dim m_Str1 As String, m_Str2 As String
    lngL = UBound(Split(谈话记录, vbCrLf))
   
    For lngN = 0 To lngL
       
        strTmp = Split(谈话记录, vbCrLf)(lngN)
        lngM = Len(strTmp)

        For i = 1 To lngM

            If Asc(Mid(strTmp, i, 1)) < 0 Then  '看字符的ASC 小于0的为中文
                ChineseStrLen = ChineseStrLen + 1 '循环计算出中文字符数量
            End If
        Next i

   

        m_Str1 = strTmp
        m_Str2 = StrConv(m_Str1, vbFromUnicode)
        If LenB(m_Str1) <> LenB(m_Str2) Then '如果存在英文字符或中英文混合字符

 

                    For n = 1 To lngM Step ChineseStrLen + (30 - ChineseStrLen) * 2  '设定步长为

ChineseStrLen + (30-ChineseStrLen)*2

                            DoCmd.SetWarnings False
                            DoCmd.RunSQL "INSERT INTO 谈话明细 (谈话记录) VALUES ('" & Mid

(strTmp, n, 30) & "')"
                            DoCmd.SetWarnings True

                    Next

               

        Else        '如果只有中文字符

                    For n = 1 To lngM Step 30   '设定步长为30

                            DoCmd.SetWarnings False
                            DoCmd.RunSQL "INSERT INTO 谈话明细 (谈话记录) VALUES ('" & Mid

(strTmp, n, 30) & "')"
                            DoCmd.SetWarnings True

                    Next
                   
        End If

       
    Next
   
   

End Sub

 



萧云 发表于:2010-07-07 14:41:29

上面代码 我没通过调试。

 

把代码导到bas 模块文件,上传附件。你拷贝下来调试吧。

 

 

点击下载此附件

张平 发表于:2010-07-09 16:54:51
感谢萧云的帮助!代码导到bas 模块文件后,转成后内容内容更少了,不知是何缘故.

红尘如烟 发表于:2010-07-09 17:15:16


总记录:9篇  页次:1/1 9 1 :