高手都来呀!!!关于msflexgrid问题

bigtack 2004-09-18 01:53:07
从access的一个表中通过查询得到一个关于“研究方向”字段的内容 但我就只是想在msflexgrid中显示查询关键字前后各10个字的内容 若这个关键字在同一内容中出现多次 还必须一样输出其前后10个字的内容 在线等!写出关键代码!
...全文
260 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
northwolves 2004-09-20
  • 打赏
  • 举报
回复
Split(a, "789")把789作为分隔字符,与VBCRLF,SPACE(1)做分隔意义相同
bigtack 2004-09-20
  • 打赏
  • 举报
回复
关于split函数,有这样一段代码:
Private Sub Command1_Click()
Dim a As String
Dim ls_Content() As String
Dim LogCount As Long
Dim i As Integer
a = "ABC789AC789DD789safasf789asdfsf789safdasfd789789"

ls_Content = Split(a, "789")
For i = 0 To UBound(ls_Content)
MsgBox ls_Content(i)
Next i
End Sub
msgbox依次显示的是:
第一次:ABC
第二此:AC
3:DD
4:safasf
5:asdfsf
6:safdasfd
为什么这个ls_content的一维字符数组会使这样的结果那?难道这里把ABC与AC,DD等各看成一个数据马?这是split的内部定义马?
jam021 2004-09-20
  • 打赏
  • 举报
回复
帮顶
northwolves 2004-09-20
  • 打赏
  • 举报
回复
但是没有结果亚!
-----------------
结果在调试窗口.



Private Sub Command1_Click()
Dim temp() As String, X As String, I As Long
X = "xxx1234567890abcd9876543210xxxqwqwqwqwqwabcghghghghghghxxx1234567890abcd9876543210xxxqwqwqwqwqwabcghghghghghghxxx1234567890abcd9876543210xxxqwqwqwqwqwabcghghghghghgh"
On Error Resume Next
temp = Split(X, "abc")
MSFlexGrid1.TextMatrix(1, 1) = Right(temp(I), 10)
MSFlexGrid1.TextMatrix(1, 2) = Left(temp(UBound(temp)), 10)
For I = 1 To UBound(temp) - 1
MSFlexGrid1.AddItem "" & vbTab & Right(temp(I), 10)
MSFlexGrid1.AddItem "" & vbTab & Left(temp(I), 10)
Next
End Sub

Private Sub Form_Load()
MSFlexGrid1.Cols = 2
End Sub
海洋微风 2004-09-20
  • 打赏
  • 举报
回复
晕,另外加上去吧.
bigtack 2004-09-20
  • 打赏
  • 举报
回复
ding!
bigtack 2004-09-20
  • 打赏
  • 举报
回复
northwolves 你好!
我要用msflexgrid输出这个要求的字符串
你的我试验了 方法是:创建一个command按钮 粘贴代码
但是没有结果亚!
bigtack 2004-09-20
  • 打赏
  • 举报
回复
ding!
haohaohappy 2004-09-20
  • 打赏
  • 举报
回复
试试 X = "ggsfgsgabcdffafabcDASDAabcabc"
bigtack 2004-09-20
  • 打赏
  • 举报
回复
加问:
1>如和把msflexgrid的某一列的单元设置成固定长度只有2000,而它可以容纳的字符数可以无限!?
不知msflexgrid有没有这种功能亚!?
2》如何让一段字符中的某个字符串显示红色
如:我的梦想是成为一个优秀的程序员,你的梦想那! 在这里两个“梦想”成红色字体
tztz520 2004-09-19
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim db As Database
Dim rs As Recordset
dim tempStr as string

Set db = OpenDatabase(App.Path & "\aaa.mdb")
Set rs = db.OpenRecordset("select * from tablename")

Do While Not rs.EOF
tempStr=rs.Fields(0).Value
if len(tempStr)>20 then
msflexgrid.text=mid(tempStr,1,10) & "..." & mid(tempStr,len(tempStr)-9,10)
else
msflexgrid.text=tempStr
end if
rs.MoveNext
Loop
End Sub
northwolves 2004-09-19
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim temp() As String, X As String, I As Long
X = "xxx1234567890abcd9876543210xxxqwqwqwqwqwabcghghghghghghxxx1234567890abcd9876543210xxxqwqwqwqwqwabcghghghghghghxxx1234567890abcd9876543210xxxqwqwqwqwqwabcghghghghghgh"
On Error Resume Next
temp = Split(X, "abc")
Debug.Print Right(temp(I), 10)
Debug.Print Left(temp(UBound(temp)), 10)
For I = 1 To UBound(temp) - 1
Debug.Print Right(temp(I), 10)
Debug.Print Left(temp(I), 10)
Next
End Sub
bigtack 2004-09-19
  • 打赏
  • 举报
回复
那位高手能不吝赐教那!?
bigtack 2004-09-19
  • 打赏
  • 举报
回复
若abc出现多次那?
如"xxx1234567890abcd9876543210xxxqwqwqwqwqwabcghghghghghgh"
northwolves 2004-09-19
  • 打赏
  • 举报
回复
表达得不是太清楚,举个例子。

不知是不是这个意思:

"xxx1234567890abcd9876543210xxx", 若关键字为abcd,则列出 1234567890 和 9876543210

Dim temp() as string
temp=split("xxx1234567890abcd9876543210xxx", "abcd")
msgbox right(temp(0),10)& vbcrlf & left(temp(1),10)
bigtack 2004-09-19
  • 打赏
  • 举报
回复
haohaohappy
不是这样的 有兴趣的华再看看
bigtack 2004-09-19
  • 打赏
  • 举报
回复
tztz520(午夜逛街)

你的解决方案是查询的关键字只出现一次!如果在一个内容中有两个以上的相同关键字改如何解决
haohaohappy 2004-09-19
  • 打赏
  • 举报
回复
假设你的关键字为keystr
left(keystr,10) 得到前十个字
right(keystr,10) 得到后十个字
不知道你是不是这个意思
tztz520 2004-09-18
  • 打赏
  • 举报
回复
得到内容后,用MID等处理字符串,再附给MSFLEXGRID
zcm123 2004-09-18
  • 打赏
  • 举报
回复
msdn上有相关的方法
加载更多回复(3)

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧