2010-11-15 22 views
7

Ho un semplice modulo, una query e un report in Access 2003. Devo modificare i risultati della query in un recordset utilizzando VBA e quindi passarlo al report come origine record.Record di record ADODB come record di accesso RecordSource

Se si dichiara il recordset come RecordSet e si utilizza la relativa proprietà Name come RecordSource del report, allora funziona. Tuttavia, poiché è necessario modificare il recordset, ritengo che sarebbe più semplice utilizzare un set di record ADODB come indicato di seguito.

Il set di record è dichiarato come Dim rs As ADODB.RecordSet in un modulo globale. Il resto del codice è;

Dim db As Database 
Set db = CurrentDb 
Dim con As ADODB.Connection 
Set con = CurrentProject.Connection 
Set rs = New ADODB.Recordset 
Set rs.ActiveConnection = con 
rs.Source = "Select * from XXX" 
rs.LockType = adLockOptimistic 
rs.CursorType = adOpenKeyset 
rs.Open 

'manipulate rs here....' 

Ho usato per passare il RecordSource del report come myReport.RecordSource = rs.Name. Ma l'ADODB non ha una proprietà Name.

Come posso passare questo recordset al report come origine record?

Grazie

+0

perché pensi che devi fare questo? Perché non puoi semplicemente impostare la Recordsource nell'evento OnOpen del report? –

+0

In realtà sto impostando la proprietà RecordSource del report all'evento aperto del report, ma richiede il nome del set di record e ADODB Recordset non ha una proprietà name. – Sivakanesh

+1

Sto dicendo che non usare un recordset - basta impostare l'SQL della proprietà Recordsource come SQL che si sta utilizzando per aprire il recordset. Se c'è qualche motivo per cui non funzionerà, non lo vedo. Questo è il modo standard per farlo, invece di impostare il Recordset del report (che è qualcosa che non ho mai avuto bisogno di fare in tutti i miei anni di programmazione Access for a living). –

risposta

5

Non è possibile associare un report a un recordset ADO in un MDB, solo in un ADP: http://support.microsoft.com/?id=287437

+1

Sì, impossibile con un ADODB. Quindi ho appena creato una query table make e manipolato i dati al suo interno. Quindi leghi il rapporto a quel tavolo. – Sivakanesh

0

Non ho una copia di Access 2003 per mano, ma dalla memoria basta fare

Set Me.Recordset = rs 

Sono appena tornata da uno sguardo sul Microsoft KB e sembra che la mia memoria è ancora lavoro!

http://support.microsoft.com/kb/281998

Problemi correlati