2009-12-02 5 views
0

J'ai un code qui charge mes données dans la table sql. Je veux savoir qu'il existe un moyen de charger des données dans une autre table s'il y a une valeur en double. Si oui, pouvez-vous m'aider? Ma requête est:trouver l'insertion en double dans une autre table

"insérer dans les valeurs t_DATA_DneFrc (RTN, AccountNbr, prénom, MiddleName, Nom, montant) ('" & rcdDNE ("RTN") & " ''" & rcdDNE ("AccountNbr") & " ''" & rcdDNE ("FirstName") & " ''" & rcdDNE ("MiddleName") & " ''" & rcdDNE ("NOM") & " ''" & rcdDNE (» Montant ") &" ') "

qui va insérer des données dans le tableau t_DATA_DneFrc. Maintenant, je veux changer la requête s'il y a un doublon insérer cette ligne dans t_DATA_DneFrcDuplicate. Est-ce possible?

' Write records to Database 

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 

frmDNELoad.lblStatus.Caption = "DNE Processing Complete." 
frmDNELoad.Refresh 

End Function 
Sub CommitNew() 

'  Add records to DneFrc table 
With rcddnefrc 
    .Requery 
    .AddNew 
    .Fields![RTN] = rcdDNE.Fields![RTN] 
    .Fields![AccountNbr] = rcdDNE.Fields![AccountNbr] 
    .Fields![FirstName] = rcdDNE.Fields![FirstName] 
    .Fields![MiddleName] = rcdDNE.Fields![MiddleName] 
    .Fields![LastName] = rcdDNE.Fields![LastName] 
    .Fields![Amount] = rcdDNE.Fields![Amount] 
    .Update 
End With 

Répondre

3

Vous devez exécuter une deuxième requête, qui devrait ressembler à

insert into t_DATA_DneFrcDuplicate 
     (RTN, AccountNbr, FirstName, MiddleName, 
     LastName, Amount, Occurances) 
    select RTN, AccountNbr, FirstName, MiddleName, 
     LastName, Amount, COUNT(*) 
    from t_DATA_DneFrc 
    group by RTN, AccountNbr, FirstName, MiddleName, 
      LastName, Amount 
    having COUNT(*) > 1 

(Ceci est la syntaxe Oracle, espérons-le, sera de même pour vous.)

+1

Aucune syntaxe spécifique Oracle que je peux voir, devrait être sûr sur SQL Server. –

+0

ce qui est des occurrences? Ai-je besoin d'écrire quelque chose à la place de l'occurance? – pbrp

+0

J'ai juste pensé inclure le COUNT (*) dans la clause SELECT pour plus de clarté, puis l'insérer dans une colonne appelée Occurances. Vous n'avez pas, bien sûr: insert dans t_DATA_DneFrcDuplicate (RTN, AccountNbr, FirstName, MiddleName, LastName, Montant) sélectionnez RTN, AccountNbr, FirstName, MiddleName, LastName, Montant du groupe t_DATA_DneFrc par RTN, AccountNbr, FirstName, MiddleName, Nom, Nombre ayant COUNT (*)> 1 –

Questions connexes