Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Abbiamo provato per voi il nuovo DLC lanciato a sorpresa da Blizzard per Diablo II: Resurrected e quella che segue è una disamina dei nuovi contenuti che abbiamo avuto modo di sperimentare nel corso delle nostre sessioni di gioco, con particolare riguardo per la nuova classe dello Stregone
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


Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Virtual C-Suite: gli agenti IA di Master...
WINDTRE alza i prezzi: nuova rimodulazio...
Resident Evil Requiem non si ferma pi&ug...
Pokémon Go: 30 miliardi di foto u...
Samsung Galaxy Z TriFold è gi&agr...
Accessori auto da non perdere su Amazon:...
Robot tagliaerba senza filo perimetrale ...
Blink ancora in forte sconto su Amazon: ...
NVIDIA Vera Rubin è una piattafor...
Nokia al MWC 2026: l'IA entra nella rete...
Troppe violazioni di copyright: sospeso ...
Ancora una rimodulazione da TIM: questa ...
Apple svela le AirPods Max 2 c...
Robot umanoidi nelle Fab di chip: STMicr...
DLSS 5: quali GPU lo supporteranno? Ecco...
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: 10:23.


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