Passaggio parametri Access 2003

giovedì 02 febbraio 2006 - 22.07

ktm86 Profilo | Junior Member

Ciao a tutti


vorrei sapere come fare per passare 2 parametri da una maschera ad un report. Parlo di Access 2003

Nella maschera ho 2 caselle combinate e dovrei passare il loro contenuto a due text di un report.


Ho provato con Testo123 = Form_Menu.Periodo1.Text ma mi crea questo errore: "Impossibile fare riferimento ad una proprietà o ad un metodo che non abbiano lo stato attivo"


avete qualche idea?

Brainkiller Profilo | Guru

>vorrei sapere come fare per passare 2 parametri da una maschera
>ad un report. Parlo di Access 2003
>Nella maschera ho 2 caselle combinate e dovrei passare il loro
>contenuto a due text di un report.
>Ho provato con Testo123 = Form_Menu.Periodo1.Text ma mi crea
>questo errore: "Impossibile fare riferimento ad una proprietà
> o ad un metodo che non abbiano lo stato attivo"

Allora se non ricordo male in Access c'è una sintassi apposita per recuperare i parametri.
Nella query del Report devi usare questa sintassi per esempio:

SELECT * FROM TABELLA WHERE CAMPO1=[Forms]![Nome Form]![Nome_Controllo]

E' una cosa di questo tipo. Se premi sul pulsante con i 3 puntini [...] in Access, compare un Query Builder dove puoi andare a prendere i vari oggetti [Forms], ecc. e lo componi con più facilità.
ciao


David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

ktm86 Profilo | Junior Member

tutto risolto

grazie ancora una volta

Non è che non lo so fare, è che proprio non ne ho idea!!!

Amodio Profilo | Expert

ciao
io vorrei utilizzare le stampe di access da un programma scritto .net
come posso passare esternamente dei parametri?

ci sono altri modi per farlo oltre internaente da form di access?
grazie

BangBangMan Profilo | Newbie

Anche io avrei questa esigenza...nessuno di voi sa come si fa?

Amodio Profilo | Expert

alla fine avevo tovato il modo
praticametne quando avvii la stampa di access da vb.net ci sono dei parametri nella funzione docmd.runreport(non ricordo come si chiama esattametne)
la sintassi era "nomeparametro:=valore"

ora ho lasciato perdere quel progetto ed ho fatto i report in html, spiace ma piu' di questo non ricordo

Amodio Profilo | Expert

ciao ho trovato la sub che avevo fatto
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click



Dim oAccess As Access.Application
oAccess = New Access.Application


Dim StrPercorsoDb As String
' StrPercorsoDb = "C:\Documents and Settings\Bigfoot\Desktop\winaccessreport\WinAccessReport\bin\report.mdb"
StrPercorsoDb = "C:\DB.accdb"

Dim sDBPath As String 'path to DB
Dim sReport As String

'Testing
sReport = "anagrafica"
' Start a new instance of Access for Automation:

sDBPath = StrPercorsoDb ' "C:\NorthWindODBC\NorthWind.mdb"

' Error occurs here on OpenDatabase *****
oAccess.OpenCurrentDatabase(filepath:=sDBPath, Exclusive:=False)
oAccess.DoCmd.Minimize()
oAccess.Visible = False

'oAccess.DoCmd.OpenReport(reportname:="anagrafica", View:=Access.AcView.acViewPreview, FilterName:="", wherecondition:="anagrafica.Residenza='Roma'", windowmode:=Access.AcWindowMode.acHidden) ', WindowsMode:=Access.AcWindowMode.acWindowNormal)
'Output in snapshot format to a temp file

Dim filtro As String = "SELECT anagrafica.* FROM anagrafica where Residenza='Roma'"
' oAccess.Reports("anagrafica").RecordSource = filtro
oAccess.DoCmd.OpenReport(reportname:="anagrafica", View:=Access.AcView.acViewPreview, FilterName:="", wherecondition:="", windowmode:=Access.AcWindowMode.acHidden, openargs:="" & filtro & "")


oAccess.DoCmd.OutputTo(Access.AcOutputObjectType.acOutputReport, sReport, "Snapshot Format", "C:\temp.snp", False)



'Quit access
oAccess.Quit()
'Free ' FilterName:="anagrafica.Nome=Fulvio"
oAccess = Nothing

While System.IO.File.Exists("c:\temp.snp") = False
Application.DoEvents()
System.Threading.Thread.Sleep(1000)
End While
System.Diagnostics.Process.Start("c:\temp.snp")
End Sub


BangBangMan Profilo | Newbie

Grazie mille per l'aiuto!
Ma adesso come faccio a dichiarare un parametro in un report di access?

Amodio Profilo | Expert

si, infatti devi prelevare la query che ti invia il programma, ma non puoi prendere parametri, altrimenti dovresti salvare dal programma nelle tabelle e recuperare attraverso la stampa


stasera torno a casa e ti posto come fare a prelevare la query che ti inviai l programma dalla stampa

BangBangMan Profilo | Newbie

Ok grazie mille, cmq per chiarezza di scrivo esattamente quello che dovrei fare.
In pratica ho la necessità di cambiare al volo semplicemente alcune label, per esempio da "Modello" a -> "Model".

Grazie ancora per l'aiuto che mi dai.

Saluti

Amodio Profilo | Expert

ho questo codice nel repot :

Private Sub Report_Open(Cancel As Integer)
If Me.OpenArgs <> "" Then Me.RecordSource = Me.OpenArgs
End Sub

praticamente openArgs lo spedisco da vb.net e dentro access mi prendo la stringa, se vuoi fare una furbata lo dividi tra punto e virgola e cosi' con uno split ti puoi gestire anche i parametri

BangBangMan Profilo | Newbie

Ahhhhhhhh!!!
Ho capito finalmente!
Grazie mille! Mi hai aiutato veramente tanto!

Adesso è tutto chiaro!
Grazie ancora!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5