2017-08-22 5 views
1

J'ai donc le ci-dessous ...VBA Recordset Hanging On specfic Enregistrez

Sub test4() 

Dim db As DAO.Database 
Dim Source_rst As DAO.Recordset 
Dim Dest_rst As DAO.Recordset 

Set db = CurrentDb 

Set Source_rst = db.OpenRecordset("SELECT DISTINCTROW [Scorecard Last Ran].[Scorecard ID], Round(([DQS - Scorecard History].[No Passed]/([DQS - Scorecard History].[No Passed]+[DQS - Scorecard History].[No Failed]))*100,1) & '%' AS Score FROM [DQS - Scorecards] INNER JOIN ((SELECT [DQS - Scorecard History].[Scorecard ID], Max([DQS - Scorecard History].[Date/Time Scorecard Ran]) AS [MaxOfDate/Time Scorecard Ran] FROM [DQS - Scorecard History] GROUP BY [DQS - Scorecard History].[Scorecard ID]) AS [Scorecard Last Ran] INNER JOIN [DQS - Scorecard History] ON ([Scorecard Last Ran].[MaxOfDate/Time Scorecard Ran] = [DQS - Scorecard History].[Date/Time Scorecard Ran]) AND ([Scorecard Last Ran].[Scorecard ID] = [DQS - Scorecard History].[Scorecard ID])) ON [DQS - Scorecards].ID = [DQS - Scorecard History].[Scorecard ID];") 
Set Dest_rst = db.OpenRecordset("DQS - Scorecards") 

If (Source_rst.BOF And Source_rst.EOF) Or (Dest_rst.BOF And Dest_rst.EOF) Then Exit Sub 

While (Not Source_rst.EOF) 
    Dest_rst.MoveFirst 
    While (Not Dest_rst.EOF) 
     If Dest_rst![ID] = Source_rst![Scorecard ID] And Dest_rst![ID] <> 3 Then 
      Debug.Print Source_rst![Scorecard ID] & " - " & Source_rst![Score] 
      Dest_rst.Edit 
      Dest_rst![Score] = Source_rst![Score] 
      Dest_rst.Update 
      DoEvents 
     End If 
     Dest_rst.MoveNext 
    Wend 
    Source_rst.MoveNext 
Wend 

End Sub 

assez simple droit? Sauf si j'enlève le Dest_rst![ID] <> 3 il se bloque, même si je le laisse pendant des heures. Il n'y a rien de spécial à propos de l'enregistrement 3, et les données entrant sont les mêmes, un pourcentage formaté comme une chaîne. Fonctionne très bien si j'exclus cet enregistrement.

Je sais qu'une requête UPDATE serait plus efficace mais elle se bloque aussi. Quelque chose qui me manque ?!

Le Dest_rst est une très petite liste SharePoint.

+0

Une jointure SQL ne serait-elle pas plus simple? –

+0

Yep @Nathan_Sav! Cela pend aussi! :-( J'essaye de déboguer mon propre problème en essayant une option différente mais je suis toujours coincé, au moins de cette façon je sais quel disque est difficile – McPaddy

+0

Est-ce que ça reste bloqué si vous importez la liste des points de partage à un static table, il pourrait s'agir de la connexion sharepoint –

Répondre

0

Il s'avère que ma liste SharePoint était juste un âne. Complètement supprimé la liste de ma base de données, re-ajouté, tout allait bien, la santé mentale restaurée!

+0

Ass est un acronyme? Exemple de Sharepoint retardé ennuyeux? – Minty