Newsgroup: it.comp.appl.access
Titolo: Query con risultato una sola riga

Ciao a tutti,
spero di essere stato chiaro nell'oggeto ma non mi č venuto meglio :-)
Vorrei creare una stringa da una query:
SELECT Archivio_Pdf.Data_Doc, Archivio_Pdf.Nome_File
FROM Archivio_Pdf
WHERE (((Archivio_Pdf.Data_Doc) Between [Forms]![Maschera Stampa]![Dal] And
[Forms]![Maschera Stampa]![Al]))
ORDER BY Archivio_Pdf.Data_Doc;
Qui mi tirerebbe fuori:
file_1.pdf
file_2.pdf
file_3.pdf
ecc.. ecc..
io invece vorrei che venisse:
file_1.pdf file_2.pdf file_3.pdf ecc. ecc.
Con uno spazio tra i risultati.
E' possibile?
Ciao Grazie Cesco

 ha scritto nel messaggio 
news:NxBNk.180365$FR.4...@twister1.libero.it...

Devi fare un ciclo in VBA
   Dim rs      As DAO.Recordset
   Dim fld     As DAO.Field
Set rst = currentdb.openrecordset("SELECT Archivio_Pdf.Data_Doc, 
Archivio_Pdf.Nome_File FROM Archivio_Pdf WHERE (((Archivio_Pdf.Data_Doc) 
Between [Forms]![Maschera Stampa]![Dal] And [Forms]![Maschera Stampa]![Al])) 
ORDER BY Archivio_Pdf.Data_Doc;")
      For Each fld In rs.Fields
        If Not rs.EOF then
            rs.Fields("Nome_File ") = rs.Fields("Tuocampo") & " "
        else
           rs.Fields("Nome_File ") = rs.Fields("Tuocampo")
        end if
      Next
   rs.Close
   Set rs = Nothing
   Set fld = Nothing
Ciao
-- 
Roberto da Parma 

 ha scritto nel messaggio 
news:NxBNk.180365$FR.4...@twister1.libero.it...

Sě č possibile.
Una strada: crea una funzione che cicla tra i record della query e accoda il 
risultato in una variabile stringa.
Questa stringa ottenuta la usi come vuoi...per esempio in un campo di una 
tabella di appoggio o, se ti basta, in una msgbox o, al limite, la incolli 
in un controllo testo di una maschera.
Ciao, Carlo 

 ha scritto nel messaggio 
news:ge6p6e$6uq$1...@tdi.cu.mi.it...

L'idea č quella di mandare tutto pdftk.exe, per poter unire dei file PDF che 
hanno un percorso preciso ed il campo della query
Archivio_Pdf.Nome_File.
Sarą poi possibile mandare tutto alla shell che mi lancia pdftk.exe [elenco 
dei file sulla riga] cat file.pdf
Io non sono un programmatore e non saprei proprio come lanciare l'esecuzione 
di questo comando.
Ciao Cesco


Con il codice che ti ho postato mandi tutto in una variabile [Tuocampo] (è 
un campo che devi creare in più nella tua tabella) nel formato che hai 
chiesto
Poi con il comando Shell(...) fai quello che chiedi richiamando il valore 
del campo.


 ha scritto nel messaggio 
news:ge6t29$bph$1...@tdi.cu.mi.it...

Al primo passo mi da errore su Dim rs As DAO.Recordset
Errore di compilazione
Tipo definito dall'utente non definito
Che significa
Ciao cesco

 ha scritto nel messaggio 
news:K_CNk.180442$FR.4...@twister1.libero.it...

Mi rispondo da solo mancava il DAO in VBA.. ora l'ho inserito 

 ha scritto nel messaggio 
news:ge6p6e$6uq$1...@tdi.cu.mi.it...

Sto andando avanti passo passo ora sono a questo punto:
sul  For Each fld In rs.Fields mi dice
Erore di run-time 91
Variabile oggetto o variabile del blocco With non impostata
Private Sub Comando5_Click()
   Dim rs As DAO.Recordset
   Dim fld As DAO.Field
   Set rst = CurrentDb.OpenRecordset("SELECT Archivio_Pdf.Nome_File FROM 
Archivio_Pdf;")
      For Each fld In rs.Fields
        If Not rs.EOF Then
            rs.Fields("Nome_File ") = rs.Fields("Tuocampo") & " "
        Else
           rs.Fields("Nome_File ") = rs.Fields("Tuocampo")
        End If
      Next
   rs.Close
   Set rs = Nothing
   Set fld = Nothing
End Sub

 ha scritto nel messaggio 
news:o%DNk.91375$Ca.2...@twister2.libero.it...

Controlla il nome dei campi.
Tuocampo non esiste nella tua tabella quindi o lo sostituisci con il nome di 
un campo che c'č gią o lo aggiungi nella tua tabella, bada che lo devi anche 
aggiungere quando imposti il Set = ....
Notavo ora che sbagli anche il Set...per il momento prova con
SELECT * FROM Archivio_Pdf


 ha scritto nel messaggio 
news:ge74ep$ke2$1...@tdi.cu.mi.it...

Si infatto ho ridotto all'osso la query... per capire bene come funziona.
Solo che non capisco.. se aggiungo un campo alla tabella da cui estraggo i 
file,
dove caspita ho il risultato, nella prima riga?
Io sto estraendo un'elenco dalla tabella Archivio_Pdf, che devo fare 
aggiungere un campo in quella tabella?
Ciao Francesco 

 Roberto da Parma
Ora ho aggiunto un campo Memo che si chiama Note nella tabella Archivio_Pdf
ma c'è ancora qualche cosa che non fa nel FOR... mi si blocca li.
Private Sub Comando5_Click()
   Dim rs As DAO.Recordset
   Dim fld As DAO.Field
   Set rst = CurrentDb.OpenRecordset("SELECT * FROM Archivio_Pdf;")
      For Each fld In rs.Fields
        If Not rs.EOF Then
            rs.Fields("Nome_File ") = rs.Fields("Note") & " "
        Else
           rs.Fields("Nome_File ") = rs.Fields("Note")
        End If
      Next
   rs.Close
   Set rs = Nothing
   Set fld = Nothing
Ciao Grazie della pazienza
End Sub 

 che hanno un percorso preciso ed il campo della query
Del tipo come complicarsi la vita....
La soluzione che ti ho prospettato č molto piů semplice e il risultato č 
esattamente la stringa che devi mandare a pdftk.exe.
Perchč non l'hai presa in considerazione?
Ciao, Carlo 

 ha scritto nel 
messaggio news:ge7bsn$tn1$1...@tdi.cu.mi.it...

Scusami Carlo,
non volevo non prenderla in considerazione, ma non ho capito cosa fare.
Perdonami... sto cercando di trovarle il modo piů semplice,
forse tu mi hai dato i giusti input.. ma hai capito cosa devo fare.
Ciao cesco 

 ha scritto nel 
messaggio news:ge7bsn$tn1$1...@tdi.cu.mi.it...

Aggiungo anche che non so costruire funzioni...
Ciao cesco 

 Ciao cesco
 Dicevo..."crea una funzione che cicla tra i record della query e accoda il
risultato in una variabile stringa.
Questa stringa ottenuta la usi come vuoi...per esempio in un campo di una
tabella di appoggio o, se ti basta, in una msgbox o, al limite, la incolli
in un controllo testo di una maschera".
Salva la tua query e dagli un nome.
Poi apri un modulo pubblico e scrivi la seguente Function:
Public Function CreaStringa() as string
dim rcs as DAO.Recordset ' ricorda di inserire il riferimento a DAO
Dim i as integer, MiaStringa as string
Set rcs = CurrentDB.OpenRecordset("NomeQuerySalvata")
rcs.movelast
rcs.movefirst
MiaStringa = ""
For i = 1 to rcs.recordcount
MiaStringa = Miastringa & " " & rcs!Nome_File
rcs.movenext
next i
rcs.close
set rcs = nothing
CreaStringa = MiaStringa
End Function
Il risultato di CreaStringa() è proprio l'elenco che ti interessa.
Puoi passare questa stringa al codice che usi con pdftk.exe,
ma puoi anche salvarla dove più ti piace.
Ciao, Carlo
P.S. mi sono accorto che nella tua query usi un criterio che punta a delle 
date
presenti nella maschera "Maschera Stampa".
Questo modo di procedere potrebbe dare dei problemi, ti consiglio di usare 
due funzioni che estraggono le due date.
Per esempio:
Public Function DimmiDataDal()as date
DimmiDataDal = Forms![Maschera Stampa]!Dal
End Function
Public Function DimmiDataAl()as date
DimmiDataAl= Forms![Maschera Stampa]!Al
'o come si chiama il controllo
End Function
Nella query che salverai, nei criteri, scriverai al posto di
Between [Forms]![Maschera Stampa]![Dal] and... ecc.
Between DimmiDataDal() And DimmiDataAl()

 ha scritto nel 
messaggio news:ge7q1v$dom$1...@tdi.cu.mi.it...

Direi che ci siamo... ho buttato tutto nel MessageBox e vedo la stringa 
corretta...
ma devo essermi perso qualche cosa sulla shell perchè non mi crea il file 
unito.
Public Function CreaStringa() As String
Dim rcs As DAO.Recordset
Dim i As Integer, MiaStringa As String
Set rcs = CurrentDb.OpenRecordset("prova")
rcs.MoveLast
rcs.MoveFirst
MiaStringa = "Z:\DB_ACCESS\pdf\pdftk.exe"
For i = 1 To rcs.RecordCount
MiaStringa = MiaStringa & " " & rcs!Nome_File
rcs.MoveNext
Next i
rcs.Close
Set rcs = Nothing
CreaStringa = MiaStringa & " " & "cat output c:\Temp\file.pdf"
Call Shell(MiaStringa, 1)
End Function
Ciao cesco 

 ha scritto nel messaggio 
news:NxBNk.180365$FR.4...@twister1.libero.it...

Risolto utile per PDFTK.EXE
Public Function CreaStringa() As String
Dim rcs As DAO.Recordset
Dim i As Integer, MiaStringa As String
Set rcs = CurrentDb.OpenRecordset("prova") ' nome della query
rcs.MoveLast
rcs.MoveFirst
MiaStringa = "Z:\DB_ACCESS\pdf\pdftk.exe" ' dove si trova l'eseguibile
For i = 1 To rcs.RecordCount
MiaStringa = MiaStringa & " Z:\DB_ACCESS\pdf\" & rcs!Nome_File ' da mettere 
sempre il percorso dove sono i file PDF altrimenti la shell non funziona
rcs.MoveNext
Next i
rcs.Close
Set rcs = Nothing
CreaStringa = MiaStringa & " " & "cat output c:\Temp\file.pdf" ' dove 
mettere il file che unisce i PDF
Call Shell(CreaStringa, 1)
End Function
Grazie a tutto coloro che mi hanno aiutato.
Ciao cesco