設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 4041|回復(fù): 6
打印 上一主題 下一主題

[模塊/函數(shù)] InStr 獲取所有記錄字段非重復(fù)ID

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2020-4-8 21:00:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 Henry D. Sy 于 2020-4-8 21:00 編輯
  1. <div class="blockcode"><blockquote>'------------------------------------------
  2. '獲取所有記錄字段非重復(fù)ID
  3. '------------------------------------------
  4. Public Function gIdSeries(ByVal tblName As String) As String
  5.     Dim rs As New ADODB.Recordset
  6.     Dim I As Integer
  7.     Dim strWhat As String
  8.     Dim intID As Long
  9.     rs.Open tblName, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
  10.     Do While Not rs.EOF
  11.         For I = 0 To rs.Fields.Count - 1
  12.             If Trim(rs.Fields(I)) <> "-" Then
  13.                 intID = Left(rs.Fields(I), InStr(rs.Fields(I), "-") - 1)
  14.                 If InStr(strWhat, intID) = 0 Then
  15.                     strWhat = strWhat & intID & ","
  16.                 End If
  17.             End If
  18.         Next
  19.         rs.MoveNext
  20.     Loop
  21.     If Len(strWhat) > 0 Then
  22.         gIdSeries = Left(strWhat, Len(strWhat) - 1)
  23.     End If
  24.     rs.Close
  25.     Set rs = Nothing
  26. End Function

  27. Private Sub Command0_Click()
  28.     Dim A As String
  29.     A = gIdSeries("TEMP")
  30.     MsgBox A
  31. <div>End Sub</div><div>
  32. </div><div>提取“-”之前的ID好,總是缺少某些數(shù)字,這個例子缺少6,7</div><div>當(dāng)數(shù)據(jù)量大反而正常。


  33. </div>
復(fù)制代碼

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 分享淘帖 訂閱訂閱
2#
 樓主| 發(fā)表于 2020-4-8 21:01:37 | 只看該作者
提取“-”之前的ID號,總是缺少某些數(shù)字,這個例子缺少6,7
當(dāng)數(shù)據(jù)量大反而正常

點(diǎn)擊這里給我發(fā)消息

3#
發(fā)表于 2020-4-9 16:08:23 | 只看該作者
有時正常,有時失常?
4#
 樓主| 發(fā)表于 2020-4-9 18:14:10 | 只看該作者
tmtony 發(fā)表于 2020-4-9 16:08
有時正常,有時失常?

就這幾條記錄,永遠(yuǎn)錯誤
多增加幾條記錄,反而正常。

點(diǎn)擊這里給我發(fā)消息

5#
發(fā)表于 2020-4-11 08:33:48 | 只看該作者
Henry D. Sy 發(fā)表于 2020-4-9 18:14
就這幾條記錄,永遠(yuǎn)錯誤
多增加幾條記錄,反而正常。

這個正常的。因為你先取到 16, 所以 當(dāng)新的是 6,  就認(rèn)為存在了。
所以要改進(jìn)一下就可以了

點(diǎn)擊這里給我發(fā)消息

6#
發(fā)表于 2020-4-11 08:35:15 | 只看該作者
Henry D. Sy 發(fā)表于 2020-4-8 21:01
提取“-”之前的ID號,總是缺少某些數(shù)字,這個例子缺少6,7
當(dāng)數(shù)據(jù)量大反而正常

改成下面這樣的代碼就可以解決了


  1. Public Function gIdSeries(ByVal tblName As String) As String
  2.     Dim rs As New ADODB.Recordset
  3.     Dim I As Integer
  4.     Dim strWhat As String
  5.     Dim intID As Long
  6.     rs.Open tblName, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
  7.     Do While Not rs.EOF
  8.         For I = 0 To rs.Fields.Count - 1
  9.             If Trim(rs.Fields(I)) <> "-" Then
  10.                 intID = Left(rs.Fields(I), InStr(rs.Fields(I), "-") - 1)
  11.                 If intID = 6 Then
  12.                    Debug.Print intID
  13.                 End If
  14.                 If InStr("," & strWhat, "," & intID & ",") = 0 Then
  15.                     strWhat = strWhat & intID & ","
  16.                 End If
  17.             End If
  18.         Next
  19.         rs.MoveNext
  20.     Loop
  21.     If Len(strWhat) > 0 Then
  22.         gIdSeries = Left(strWhat, Len(strWhat) - 1)
  23.     End If
  24.     rs.Close
  25.     Set rs = Nothing
  26. End Function
復(fù)制代碼



7#
 樓主| 發(fā)表于 2020-4-11 18:27:38 | 只看該作者
tmtony 發(fā)表于 2020-4-11 08:33
這個正常的。因為你先取到 16, 所以 當(dāng)新的是 6,  就認(rèn)為存在了。
所以要改進(jìn)一下就可以了

暈暈暈,這點(diǎn)沒注意到!
多虧 你提醒
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機(jī)版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2024-10-23 06:17 , Processed in 0.102875 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表