如何使用vb6在记录集中查找重复项

时间:2009-12-03 15:47:54

标签: vb6

嗨我有一个记录集名称rcdDNE。我从文本文件中读取rtn,accno,名字,中间名,姓氏,金额并将其存储到记录集。现在我想将这些值存储到数据库表中。在我的表中,accno是主键。因此,在将其存储到我的表中之前,我想知道我的记录集中是否有任何重复的accno。如果我想将其写入文本文件。

任何人都可以帮助我。

' Set up rcdDNE structure
With rcdDNE.Fields
    .Append "RTN", adVarChar, 9
    .Append "AccountNbr", adVarChar, 17
    .Append "IndividualName", adVarChar, 22
    .Append "FirstName", adVarChar, 50
    .Append "MiddleName", adVarChar, 1
    .Append "LastName", adVarChar, 50
    .Append "Amount", adCurrency
End With

rcdDNE.Open
intFileNbr = FreeFile(1)
Open strFileName For Input As #intFileNbr Len = 95 ' Open file for input.
Do While Not EOF(intFileNbr)
   Line Input #intFileNbr, strCurrentLine
   If Mid(strCurrentLine, 1, 1) = 6 Then
     strRoutingNbr = Mid(strCurrentLine, 4, 8)
     strAcct = Trim(Mid(strCurrentLine, 13, 17))
     strIndividualName = Trim(Mid(strCurrentLine, 55, 22))
     strAmount = Trim(Mid(strCurrentLine, 30, 10))
     strAmount = Left(strAmount, Len(strAmount) - 1)
     curAmount = CCur(strAmount)

   ' Add new record to temporary recordset
        With rcdDNE
            .AddNew
            .Fields![RTN] = strRoutingNbr
            .Fields![AccountNbr] = strAcct
            .Fields![IndividualName] = strIndividualName
            .Fields![Amount] = curAmount
            .Update
        End With
   End If
Loop

'将记录写入数据库

frmDNELoad.lblStatus.Caption = "Loading data into database......"
Dim lngRecCount As Long
lngRecCount = 0
rcdDNE.MoveFirst

 With cmdCommand
    .ActiveConnection = objConn
    .CommandText = "insert into t_DATA_DneFrc (RTN, AccountNbr, FirstName, MiddleName, LastName, Amount) values ('" & rcdDNE("RTN") & "', '" & rcdDNE("AccountNbr") & "', '" & rcdDNE("FirstName") & "', '" & rcdDNE("MiddleName") & "', '" & rcdDNE("LastName") & "', '" & rcdDNE("Amount") & "')"
    .CommandType = adCmdText
End With

Set rcddnefrc = New ADODB.Recordset
With rcddnefrc
    .ActiveConnection = objConn
    .Source = "SELECT * FROM T_DATA_DNEFRC"
    .CursorType = adOpenDynamic
    .CursorLocation = adUseClient
    .LockType = adLockOptimistic
    .Open
End With

Do Until rcdDNE.EOF
    lngRecCount = lngRecCount + 1
    frmDNELoad.lblStatus.Caption = "Adding record " & lngRecCount & " of " & rcdDNE.RecordCount & " to database."
    frmDNELoad.Refresh
    DoEvents
    Call CommitNew
    rcdDNE.MoveNext
Loop

2 个答案:

答案 0 :(得分:0)

在循环中,从文本文件中读取数据,构建accno列表。

每次从文本中读取一行时,首先检查列表是否包含accno,如果没有,则添加记录,并将accno添加到列表中。

如果它确实包含列表中的accno,则不要将该行添加到记录集并移至下一行。

答案 1 :(得分:0)

咩。重复检查很糟糕。您可能最好只将整个数据集转储到数据库中,然后执行SELECT DISTINCT ... INTO ...并创建另一个没有重复的表。然后,您可以比较两个表中的记录以查找重复记录。

否则,您将不得不拉出第一条记录,根据您的整个数据集检查它,拉出第二条记录等。这种比较的成本很高。