2009-12-03 67 views
0

嗨,我有一個記錄集名稱rcdDNE。我從文本文件中讀取rtn,accno,名字,中間名,姓氏,數量並將其存儲到記錄集中。現在我想將這些值存儲到數據庫表中。在我的表中,accno是主鍵。所以在將它存儲到我的表之前,我想知道我的記錄集中是否有重複的accno。如果我有我想寫它到文本文件。如何在記錄集中使用vb6查找重複項

任何人都可以幫助我。

' 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 

回答

0

在循環中,在那裏從文本文件中讀取數據,建立的登錄號的列表。

每次從文本中讀取一行時,首先檢查列表是否包含accno,如果沒有,請添加記錄,並將accno添加到列表中。

如果它已包含列表中的accno,請不要將該行添加到記錄集並移至下一行。

+0

可以解釋一點點,或者如果你有任何示例代碼可以發佈。 – pbrp 2009-12-03 16:08:04

+0

你如何讓我建立acc no。的alist?我是否需要創建另一個記錄集或什麼?對不起,我是vb6和這個編碼的新手。這就是爲什麼這麼多問題。提前致謝 – pbrp 2009-12-03 16:11:40

+0

@pbrp:使用集合或Scripting.Dictionary。 – 2009-12-03 16:12:45

0

梅。重複檢查很爛。將整個數據集轉儲到數據庫中,然後執行SELECT DISTINCT ... INTO ...並創建另一個沒有重複項的表,可能會更好。然後您可以比較兩個表中的記錄來查找重複的記錄。

否則,您將不得不拉第一條記錄,對照您的整個數據集檢查它,拉第二條記錄等。這種比較的成本很高。