|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
25-03-2013, 11.28.38 | #1 |
Newbie
Registrato: 25-03-2013
Messaggi: 6
|
[ACCESS 2010/VBA] Aiuto query con from da combobox
Ho una maschera con 3 textbox e 1 combobox in cui i valori sono nomi di tabelle. inserendo un valore in una textbox e cliccando il tasto dovrebbe fare la stessa ricerca su tabelle differenti a seconda del valore selezionato nella combobox. ho provato query del tipo SELECT * FROM [Forms!Ricerca!Combobox] WHERE etc ma niente, anche senza [] dice errore nella from e stesso problema se con difficoltà creo la query tramite vba. se non fosse possibile con combobox va bene anche se l'utente immette in una textbox il nome tabella Grazie mille spero riusciate a darmi qualche idea |
25-03-2013, 11.43.48 | #2 |
Gold Member
WT Expert
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
|
Rif: [ACCESS 2010/VBA] Aiuto query con from da combobox
Non so aiutarti nello specifico, ma ti consiglio di procedere per passi.
[Forms!Ricerca!Combobox] cosa ti restituisce esattamente?
___________________________________
La risposta è dentro di te... e però, è sbagliata! |
25-03-2013, 11.53.07 | #3 |
Newbie
Registrato: 25-03-2013
Messaggi: 6
|
Rif: [ACCESS 2010/VBA] Aiuto query con from da combobox
niente quando salvo la query mi dice errore nella from.
invece nel vba se faccio MsgBox(Combobox.value) restituisce il valore ma ho problemi nel generare una select, mi funziona solo l'insert into cosi' fatto Dim sql as String sql = "Insert into...." DoCmd.RUNSQL sql |
25-03-2013, 12.04.51 | #4 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: [ACCESS 2010/VBA] Aiuto query con from da combobox
SQL = "SELECT * FROM [" & combobox.value & "] WHERE ..."
Non servono i riferimenti agli oggetti che appartengono già alla finestra Prova con db.execute SQL (solo per query di azione) Una volta che hai compilato il recordset, cosa ne fai ? Per le queries di selezione, di solito si crea un riferimento all'oggetto Recordset generico con Dim Rs As Recordset. Dopodichè, si popola il Recordset con set db=OpenRecordset(SQL) Db equivale all'oggetto ACCESS Si verifica se il recordset è stato popolato con la proprietà RecordCount. Se rs.RecordCount è > 0, allora si passa a sfogliare il recordset rs.MoveFirst (Superfluo, ma non si sa mai) while not rs.eof (finchè non si raggiunge la fine di rs) debug.print rs!nomecolonna (qualcuno utilizza la sintassi rs.Fields("nomecolonna")) rs.MoveNext wend Si chiude il RecordSet aperto con Rs.Close Si elimina il riferimento a rs con set rs=nothing Oppure Quasi tutti gli oggetti possiedono una proprietà di stringa alla quale puoi assegnare una query. Per popolare l'oggetto, dopo aver impostato la proprietà, esegui un requery dell'oggetto e quello si popolerà in base alla query specificata |
25-03-2013, 12.51.14 | #5 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: [ACCESS 2010/VBA] Aiuto query con from da combobox
Quando hai a che fare con proprietà e/o metodi che interessano lo stesso oggetto all'interno del tuo algoritmo, spesso si utilizza with.
es: Codice:
dim rs as recordset set db=openrecordset(sql) with rs if .recordcount then .movefirst while not .eof debug.print .fields("xyz") .movenext wend else msgbox("recordset non popolato") end if .close end with set rs=nothing Nota che "dim rs as recordset" non è "dim rs as new recordset", poichè il recordset resta attivo fino a quando è attivo ACCESS e non devi creare una nuova istanza dello stesso, così come db. set rs=nothing elimina il riferimento locale all'oggetto, non il recordset stesso. Fai riferimento il meno possibile a docmd (il do command) perchè simula la selezione dell'utente sulla voce di menu ed è poco professionale. |
25-03-2013, 13.27.21 | #6 |
Newbie
Registrato: 25-03-2013
Messaggi: 6
|
Rif: [ACCESS 2010/VBA] Aiuto query con from da combobox
allora... intanto grazie mille veramente per il tempo che mi stai dedicando mi sto un po perdendo xD allora
in realta la query mi serve per fare una ricerca e mostrare dei valori, non ho necessità di salvarli da nessuna parte, basta visualizzarli. - ho provato il comando db.execute ma mi dice necessario un oggetto... chiedo perdono perche visual basic non è il mio forte quindi potrei fare domande stupide... infatti mi sto perdendo. allora per la selezione creoun recordset - Dim Rs As Recordset. Dopodichè, si popola il Recordset con set db=OpenRecordset(SQL) dove SQL suppongo sia la mia stringa con la query dico bene? Se rs.RecordCount è > 0, allora si passa a sfogliare il recordset rs.MoveFirst (Superfluo, ma non si sa mai) while not rs.eof (finchè non si raggiunge la fine di rs) cicla finchè non finiscono i record questa parte non l'ho capita debug.print rs!nomecolonna (qualcuno utilizza la sintassi rs.Fields("nomecolonna")) rs.MoveNext wend Si chiude il RecordSet aperto con Rs.Close Si elimina il riferimento a rs con set rs=nothing ultima cosa vorrei capire come impostare dove visualizzare il risultato della query cioè facendo il ciclo passa record per record? e come faccio a dire se il risultato lo voglio in una textbox o altro? grazie mille update: access mi dice per questo comando: sub o funcion non definita Set db = OpenRecordset(sql) |
25-03-2013, 13.42.33 | #7 | ||||
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: [ACCESS 2010/VBA] Aiuto query con from da combobox
Se Recordset funziona, allora non hai definito db:
dim db as database Quota:
Quota:
Quota:
Se il record è unico, quel valore è quello che passi Se lo vuoi assegnare alla textbox, lo associ alla proprietà value della textbox Se i valori dei record sono molti, fai accesso ai metodi additem dell'oggetto. Per risparmiare cicli di clock, direttamente nel codice che sfoglia il recordset; ovviamente, prima avrai fatto accesso ai metodi di clearitems dell'oggetto affinchè si popoli solo con le items della query Quota:
La pocedura (sintassi a parte) è identica per VC++, Delphi, VB, ecc Qui trattasi di VBA, ma non cambia granchè. |
||||
26-03-2013, 12.07.23 | #8 |
Newbie
Registrato: 25-03-2013
Messaggi: 6
|
Rif: [ACCESS 2010/VBA] Aiuto query con from da combobox
grazie in qualche modo sono riuscito a mettere a posto la combobox facendola partire direttamente da query modificando un po di cose.... ora ho un altro problema... posto qui se non va bene faccio un altro post
praticamente quella combobox è stata legata a un campo di testo dove viene inserita la data e a seconda della data e del valore della combobox inserita mi tira fuori un numero dalla tabella. la tabella ha un campo data tipo date,campo char, e un campo integer la query dovrebbe tirar fuori l'integer quando i valori della data e della combobox sono inseriti dall'utente. lo faccio eseguendo questo Private Sub Data_Partenza_AfterUpdate() Dim numRetro As Integer Dim Rs As DAO.Recordset ' contatto sarebbe la combobox, e retroattiva per un data fornisce 11 volte lo stesso numero (lunga storia) cmq cosi' numretro ha l'ultimo valore quindi va bene Set Rs = CurrentDb.OpenRecordset("SELECT Retroattiva AS numRetro FROM Contatto WHERE Data = #" & Me!Data_Partenza & "#;") If Not Rs.EOF Then numRetro = Rs("numRetro") Else MsgBox ("Data non valida") Retroattiva = Null End If End Sub e nel numRetro mi trovo dento il valore integer di cui ho bisogno ho provato sia con select distinct che senza (il valore deve essere unico). cosi' come l'ho scritto funziona a spezzoni cioè con alcune date funziona e altre mi dice data non valida anche sono date valide o tira fuori un valore sbagliato (sopratutto quando la data inizia con 0 es 04/12/2012.... ma anche le altre) ho provato anche a mettere come formato data generica il campo dove inserisco la data e l'unica cosa che cambia è che viene il tasto per il calendario (perfetto ma non cambia il problema xD) non capisco invece perchè se faccio una query del tipo(sia con che senza distinct), la salvo e la eseguo, qualsiasi data corretta che inserisco nella form ricerca_retroattiva, funziona sempre visualizzandomi l'intero: SELECT DISTICT Retroattiva AS numRetro FROM Contatto WHERE Data = Forms!Ricerca_Retroattiva!Data_Partenza; grazie mille Ultima modifica di exzR : 26-03-2013 alle ore 12.55.40 Motivo: dimenticanza |
29-03-2013, 15.52.59 | #9 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: [ACCESS 2010/VBA] Aiuto query con from da combobox
Nel DB, la colonna data deve essere formattata come gg/mm/aaaa, altrimenti la data viene considerata come mm/gg/aaaa (inglese)
04/12/2012 sarò considerato 12/04/2012 che è ok, 24/12/2012 sarà considerata come 12/24/2012 che ovviamente è sbagliato. Lo stesso formato deve essere associato alla casella di testo entro la quale immetti la data, oppure la formatti prima di salvarla nel db. Molto bene per quanto riguarda racchiudere tra '#' le date. |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
[Access 2007] Query annidate | borgata | Office suite | 9 | 08-11-2012 12.03.39 |
[Access] Aiuto per query | nicx82 | Office suite | 0 | 29-07-2009 14.33.48 |
[Access 2K] Un aiuto per stampa query usando un report | Fat George | Office suite | 2 | 11-12-2008 16.02.26 |
[Access 2k] Aiuto per immagini collegate | Fat George | Office suite | 3 | 30-10-2008 16.16.15 |
[WORD] Problema stampa unione con tabelle e/o query di access | cosimoc | Office suite | 5 | 07-03-2008 12.16.30 |