MS Access 2003 - Domanda sul passaggio di informazioni da una maschera non associata a un report

StackOverflow https://stackoverflow.com/questions/2065214

Domanda

Io uso qualcosa di simile di seguito per passare le informazioni da una forma non legata ad un altro (scusate il non controllo degli errori):

Sub Button_Click()
Dim db as DAO.database
Dim rs as DAO.recordset
Dim sql as string

docmd.openform "NextFormIamAbouttoUse"

sql = "SELECT * FROM tblMain WHERE MainID = " & Me.As_MainID & ";"

' usually debug here

set db = currentdb
set rs = db.openrecordset(sql)

if rs.eof then
   msgbox "oops message"
else
     rs.movefirst
          [Forms]![NextFormIamAbouttoUse].as_mainID = rs![MainID]
          [forms]![NextFormIamAbouttoUse].value1 = rs![value1]
          ' etc

     rs.close
     set db = nothing
     set rs = nothing
     sql = ""
 end if

 'error stuff
  end sub

ok così posso usare questo genere di cose per il trasferimento di informazioni da moduli a rapporti così? vedo io uso un sacco di forme piene di caselle di testo come cruscotti, dove le caselle di testo non servono entrata, piuttosto visualizzare informazioni rapide piuttosto.

all'utente di navigare attraverso forme diverse per costruire le forme "cruscotto-like" a loro piacimento poi ad un certo punto da stampare. così ho voluto costruire look-un-come (in termini di dati offerti) riferisce ad ogni punto in modo da poter stampare la pagina delle informazioni hanno costruito attraverso queste forme.

Così ho provato a farlo con un rapporto:

Sub Button_Click()
Dim db as DAO.database
Dim rs as DAO.recordset
Dim sql as string

docmd.openreport "ReportTester", acViewPreview

sql = "SELECT * FROM tblMain WHERE MainID = " & Me.As_MainID & ";"

' usually debug here

set db = currentdb
set rs = db.openrecordset(sql)

if rs.eof then
   msgbox "oops message"
else
     rs.movefirst
          [reports]![ReportTester].as_mainID = rs![MainID]
          [reports]![ReportTester].value1 = rs![value1]
          ' etc

     rs.close
     set db = nothing
     set rs = nothing
     sql = ""
 end if

 'error stuff
  end sub

come una supposizione, e non ha funzionato. nessun errore, o qualsiasi cosa. solo che non visualizzerà alcuna informazione in questo modo. non sarà nemmeno passare il numero ID.

Così sto pensando che l'apertura del rapporto nel acViewPreview significa che non posso aggiungere le informazioni a quelle caselle di testo dopo il fatto, ma sono finite, non certo. Quindi, qualche consiglio su questo è molto apprezzato. grazie!

È stato utile?

Soluzione

Hai alcune opzioni. Si sia possibile creare una query, e passare i valori di controllo sotto forma nei valori là, creando così una query 1 record, che è possibile basare il report.

Ogni colonna sarà simile a questa: dati: Forms! [MyForm] [MyControl]

Oppure si può semplicemente associare i controlli dal modulo direttamente ai controlli di report.

Sarà necessario lasciare la forma aperta che contiene i valori mentre il report viene aperto, se si opta per uno di questi percorsi. Nessun codice complesso aveva bisogno.

Altri suggerimenti

Credo che mi manca qualcosa. Perché non si basta Recordsource del rapporto sia lo stesso Recordsource del modulo e quindi filtrare in fase di esecuzione per un particolare MainID in argomento CondizioneWHERE della DoCmd.OpenReport? Quindi è possibile eseguire il report senza bisogno di avere la forma aperta.

A meno che la forma è non legata, o ha i campi che sono costosi per calcolare al volo, non vedo alcun vantaggio al legame della relazione alla forma a tutti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top