Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 05-11-2008, 11:03   #1
marcobg80
Junior Member
 
Iscritto dal: Nov 2008
Messaggi: 6
[Access] Maschera con campi di ricerca

Ciao a tutti,
sto cercando di creare un piccolo programmino in access.
Una maschera con dei campi di ricerca.
Il mio database è già creato, quindi le tabelle sono già state create.
Quello che ho fatto è stato di collegare le tabelle che mi servivano e crearmi una query (Qscarti) che mi estrapolasse i dati a me necessari.
Sulla maschera che ho creato vorrei che l'utente potesse scegliere/scrivere i dati da ricercare nelle combobox che ho creato(es: anno, numero ordine, lavorazione,data,ecc) e succesivamente premere un pulsante che mi aprisse la mia query filtrata
Questo è il codice che ho tentato di scrivere:

Private Sub cmd_ricerca_Click()

Dim anno As Variant
cmb_anno.SetFocus
If cmb_anno.Text = "" Then
anno = "is not null"
Else
anno = "=" & cmb_anno.Text
End If

Dim numero As Variant
cmb_num.SetFocus
If cmb_num.Text = "" Then
numero = "is not null"
Else
numero = "=" & cmb_num.Text
End If

Dim lavorazione As Variant
cmb_lav.SetFocus
If cmb_lav.Text = "" Then
lavorazione = "is not null"
Else
lavorazione = "=" & cmb_lav.Text
End If

Dim strsql As String
strsql = "SELECT * from Qscarti" & "where dbo_movlav.ml_rese " & anno & "AND dbo_movlav.ml_rnum " & numero & "AND dbo_movlav.ml_codlav" & lavorazione

Dim stDocName As String

stDocName = "Qscarti"
DoCmd.OpenQuery stDocName, acNormal, acEdit

End Sub

Non mi da errori ma ci mette una vita e restituisce tutti i dati presenti nella query e non quelli che imputo io nelle combobox.

Dove sbaglio?

Grazie a tutti
marcobg80 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2008, 11:46   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da marcobg80 Guarda i messaggi
Dim strsql As String
strsql = "SELECT * from Qscarti" & "where dbo_movlav.ml_rese " & anno & "AND dbo_movlav.ml_rnum " & numero & "AND dbo_movlav.ml_codlav" & lavorazione

Dim stDocName As String

stDocName = "Qscarti"
DoCmd.OpenQuery stDocName, acNormal, acEdit
Somiglia tanto tanto a questo Thread : http://www.hwupgrade.it/forum/showthread.php?t=1834250

Vedi mia risposta al post #4.

In ogni caso non è chiaro perchè costruisci la strsql parametrizzandola giustamente con i valori delle combobox, per poi piantarla lì e chiamare una Stored Query...
Quando hai costruito la strsql hai già tutto quello che ti serve. Bastava aggiungere :

Codice:
   Maschera.RecordSource = strsql
   Maschera.Requery
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2008, 12:25   #3
marcobg80
Junior Member
 
Iscritto dal: Nov 2008
Messaggi: 6
Ti ringrazio!
Scusami ma con il codice di access nn sono molto ferratto...
In teoria la stringa sql la creo per recuperare i campi dalla mia query.no?
In teoria poi dovrebbe aprire la query filtrata
Togliendo:

Dim stDocName As String

stDocName = "Qscarti"
DoCmd.OpenQuery stDocName, acNormal, acEdit

e inserendo: (frmscarti è il nome della mia maschera/form)
frmscarti.RecordSource = strsql
frmscarti.Requery

mi da il seguente errore:

Necessario oggetto

Grazie ancora per l'aiuto
marcobg80 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2008, 14:01   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
L'unica è, se puoi, postare il DB. Magari lascia qualche dato, che so, una ventina di records per tabella...
Senza vedere come hai fatto la maschera e la query non sono in grado.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2008, 15:13   #5
marcobg80
Junior Member
 
Iscritto dal: Nov 2008
Messaggi: 6
se mi dai la tua email ti mando il tutto.
il file mi pesa troppo.
Ciao e grazie ancora
marcobg80 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2008, 16:41   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da marcobg80 Guarda i messaggi
se mi dai la tua email ti mando il tutto.
Pvt inviato.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 06-11-2008, 09:47   #7
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Anzitutto una sistemata alla strsql. Così proprio non va :

strsql = "SELECT * from Qscarti" & "where dbo_movlav.ml_rese " & anno & "AND dbo_movlav.ml_rnum " & numero & "AND dbo_movlav.ml_codlav" & lavorazione

Devi rispettare gli spazi !

Codice:
    strsql = "SELECT * FROM Qscarti" & _
             " WHERE dbo_movlav.ml_rese " & anno & _
             " AND dbo_movlav.ml_rnum " & numero & _
             " AND dbo_movlav.ml_codlav " & lavorazione
Inoltre :
- anno : se a DB è numerico va bene così, se è Data, no.
- lavorazione non va, devi metterlo tra apici singoli perchè a quanto vedo nel DB è stringa :

Codice:
Dim lavorazione As Variant
cmb_lav.SetFocus
If cmb_lav.Text = "" Then
   lavorazione = "is not null"
Else
   lavorazione = "=" & "'" & cmb_lav.Text & "'"
End If

Ultima modifica di MarcoGG : 06-11-2008 alle 14:04.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2008, 09:34   #8
marcobg80
Junior Member
 
Iscritto dal: Nov 2008
Messaggi: 6
Ciao Marco,
scusa ma ieri proprio nn ho avuto tempo di prendere in mano access.
Ho modificato il codice in questo modo, ma non funziona ancora:

Private Sub cmd_ricerca_Click()

Dim anno As Variant
cmb_anno.SetFocus
If cmb_anno.Text = "" Then
anno = "is not null"
Else
anno = "=" & cmb_anno.Text
End If

Dim numero As Variant
txt_num.SetFocus
If txt_num.Text = "" Then
numero = "is not null"
Else
numero = "=" & txt_num.Text
End If

Dim lavorazione As Variant
cmb_lav.SetFocus
If cmb_lav.Text = "" Then
lavorazione = "is not null"
Else
lavorazione = "=" & "'" & cmb_lav.Text & "'"
End If

Dim strsql As String
strsql = "SELECT * FROM Qscarti" & _
" WHERE dbo_movlav.ml_rese " & anno & _
" AND dbo_movlav.ml_rnum " & numero & _
" AND dbo_movlav.ml_codlav " & lavorazione


Form.RecordSource = strsql
Form.Requery

End Sub

Il campo anno e lavorazione sono di tipo testo e il campo numero è numero.
Ti anticipo che non posso modificare il tipo di dati, perchè il mio programma lo sto costruendo su un database gia fatto.
Quindi quello che faccio è collegarmi/importarmi le tabelle e poi costruirmi query e maschera.

Cosi facendo mi restituisce l'errore runtime '2001' OPERAZIONE PRECEDENTE ANNULLATA. Debug su linea Form.RecordSource = strsql

Ho fatto anche delle prove con il codice sql. Copiando il codice nella finestra immediata

?"SELECT * FROM Qscarti" & _
" WHERE dbo_movlav.ml_rese " & anno & _
" AND dbo_movlav.ml_rnum " & numero & _
" AND dbo_movlav.ml_codlav " & lavorazione

mi restituisce questo:

SELECT * FROM Qscarti WHERE dbo_movlav.ml_rese =2008 AND dbo_movlav.ml_rnum =36 AND dbo_movlav.ml_codlav is not null

ma provandolo all'interno di una query nn mi restituisce nessuno valore se invece la imposto cosi:

SELECT * FROM Qscarti WHERE dbo_movlav.ml_rese ="2008" AND dbo_movlav.ml_rnum =36 AND dbo_movlav.ml_codlav is not null

è perfetta!

Scusa per il papiro, ma sto diventando matto magari per una stupidata.

Grazie!
marcobg80 è offline   Rispondi citando il messaggio o parte di esso
Old 07-11-2008, 14:15   #9
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da marcobg80 Guarda i messaggi
Il campo anno e lavorazione sono di tipo testo e il campo numero è numero.
Ti anticipo che non posso modificare il tipo di dati, perchè il mio programma lo sto costruendo su un database gia fatto.
Quindi quello che faccio è collegarmi/importarmi le tabelle e poi costruirmi query e maschera.

Cosi facendo mi restituisce l'errore runtime '2001' OPERAZIONE PRECEDENTE ANNULLATA. Debug su linea Form.RecordSource = strsql

Ho fatto anche delle prove con il codice sql. Copiando il codice nella finestra immediata

?"SELECT * FROM Qscarti" & _
" WHERE dbo_movlav.ml_rese " & anno & _
" AND dbo_movlav.ml_rnum " & numero & _
" AND dbo_movlav.ml_codlav " & lavorazione

mi restituisce questo:

SELECT * FROM Qscarti WHERE dbo_movlav.ml_rese =2008 AND dbo_movlav.ml_rnum =36 AND dbo_movlav.ml_codlav is not null

ma provandolo all'interno di una query nn mi restituisce nessuno valore se invece la imposto cosi:

SELECT * FROM Qscarti WHERE dbo_movlav.ml_rese ="2008" AND dbo_movlav.ml_rnum =36 AND dbo_movlav.ml_codlav is not null

è perfetta!
Anno è testo ? Non finisco mai di stupirmi della creatività di chi fa i DB !
Se Anno è stringa, allora modificherei anche questa :

Codice:
Dim anno As Variant
cmb_anno.SetFocus
If cmb_anno.Text = "" Then
  anno = "is not null"
Else
  anno = "=" & "'" & cmb_anno.Text & "'"
End If
La mia stringa SELECT rimane valida.

Molto probabilmente questo non sarà ancora sufficiente a risolvere il problema, perchè a quanto pare la maschera non ha controlli associati.
Da ciò che mi hai mandato vedo solo una frmscarti con 3 controlli non associati...

Per prima cosa devi creare una maschera da creazione guidata, associarla alla tua query, in modo che prenda tutti i dati che interessano e salvarla.
Poi alla frmscarti AGGIUNGI le combo che fanno da filtro, e solo a quel punto potrai eseguire :

Codice:
frmscarti.Recordset = strsql 
frmscarti.Requery
Non so se mi sono spiegato. Ti avevo linkato quella discussione proprio perchè il tuo problema l'avevo già risolto per un altro utente.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2008, 10:56   #10
marcobg80
Junior Member
 
Iscritto dal: Nov 2008
Messaggi: 6
Ti ringrazio Marco, ma forse non mi sono spiegato bene.
Quello che io vorrei fare, non è visualizzare i dati sulla stessa form dove ho le mie combo box.

Una volta inseriti i dati nelle combo box (potendo scrivere o scegliere dalla lista) e premuto il pulsante RICERCA vorrei che mi aprisse in una altra finestra la mia query Qscarti filtrata secondo i campi che io imputo.
Mi scuso se non sono stato chiaro.
Grazie.
Ciao
marcobg80 è offline   Rispondi citando il messaggio o parte di esso
Old 10-11-2008, 11:53   #11
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Per prima cosa devi creare una maschera da creazione guidata, associarla alla tua query, in modo che prenda tutti i dati che interessano e salvarla.
Poi alla frmscarti AGGIUNGI le combo che fanno da filtro...
E continuo a pensare che questo fosse il metodo migliore.
Comunque è possibile rimediare agli errori che hai fatto ( se volevi una query parametrica, era meglio fare una query parametrica, anzichè una query che va a fare una SELECT su un'altra query... ).

Prova a far eseguire questo al Click, dopo che strsql è completa :
( devi prima referenziare le librerie DAO ! )

Codice:
    Dim queryTemp As QueryDef
    For Each queryTemp In CurrentDb.QueryDefs
        If queryTemp.Name = "queryTemp" Then
            DoCmd.DeleteObject acQuery, "queryTemp"
            Exit For
        End If
    Next
    Set queryTemp = CurrentDb.CreateQueryDef("queryTemp", strsql)
    DoCmd.OpenQuery ("queryTemp")
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
L’ex CEO di Intel Gelsinger punta su una...
Techly, quattro nuovi supporti TV fra mo...
Mass Effect sacrificato per Star Wars: i...
Gemini, addio al copia e incolla per cor...
13 miliardi per un colpo di stato? NVIDI...
L'agente AI Wabi crea mini-app su misura...
Edge è il primo browser a supportare Acc...
L'IA di Firefox ora compila i moduli da ...
Tracking pixel nelle email: cosa cambia ...
La GeForce RTX 5080 da 24 GB potrebbe ar...
Apple mette alle strette OpenAI, la caus...
Xbox ancora in calo: ecco com'è a...
Car of the Year 2027: sette finaliste e ...
Google Beam cambia tutto: arrivano le vi...
Curry Barker, il regista di Obsession, p...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:48.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v