Telefonino.net network
 
| 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 » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 25-03-2013, 11.28.38   #1
exzR
Newbie
 
Registrato: 25-03-2013
Messaggi: 6
exzR promette bene
[ACCESS 2010/VBA] Aiuto query con from da combobox

Ciao a tutti spero possiate aiutarmi, ho girato mezzo mondo ma non sono riuscito a venirne a capo.. dunque...

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
exzR non è collegato   Rispondi citando
Vecchio 25-03-2013, 11.43.48   #2
borgata
Gold Member
WT Expert
 
L'avatar di borgata
 
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
borgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raroborgata è un gioiello raro
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!
borgata non è collegato   Rispondi citando
Vecchio 25-03-2013, 11.53.07   #3
exzR
Newbie
 
Registrato: 25-03-2013
Messaggi: 6
exzR promette bene
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
exzR non è collegato   Rispondi citando
Vecchio 25-03-2013, 12.04.51   #4
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Smile 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
LoryOne non è collegato   Rispondi citando
Vecchio 25-03-2013, 12.51.14   #5
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
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
il tutto per velocizzare l'esecuzione e rendere + leggibile lo script.
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.
LoryOne non è collegato   Rispondi citando
Vecchio 25-03-2013, 13.27.21   #6
exzR
Newbie
 
Registrato: 25-03-2013
Messaggi: 6
exzR promette bene
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)
exzR non è collegato   Rispondi citando
Vecchio 25-03-2013, 13.42.33   #7
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Rif: [ACCESS 2010/VBA] Aiuto query con from da combobox

Quota:
Inviato da exzR Visualizza messaggio
- ho provato il comando db.execute ma mi dice necessario un oggetto...
Se Recordset funziona, allora non hai definito db:
dim db as database

Quota:
Inviato da exzR Visualizza messaggio
"Dopodichè, si popola il Recordset con set db=OpenRecordset(SQL) dove SQL suppongo sia la mia stringa con la query dico bene?"
dici bene

Quota:
Inviato da exzR Visualizza messaggio
"questa parte non l'ho capita
debug.print rs!nomecolonna (qualcuno utilizza la sintassi rs.Fields("nomecolonna"))"
Scrive nella finestra di debug il valore della colonna specificata record x record

Quota:
Inviato da exzR Visualizza messaggio
"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?"
Certo, record per record.
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:
Inviato da exzR Visualizza messaggio
chiedo perdono perche visual basic non è il mio forte quindi potrei fare domande stupide...
figurati.
La pocedura (sintassi a parte) è identica per VC++, Delphi, VB, ecc
Qui trattasi di VBA, ma non cambia granchè.
LoryOne non è collegato   Rispondi citando
Vecchio 26-03-2013, 12.07.23   #8
exzR
Newbie
 
Registrato: 25-03-2013
Messaggi: 6
exzR promette bene
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
exzR non è collegato   Rispondi citando
Vecchio 29-03-2013, 15.52.59   #9
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
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.
LoryOne non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

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

Orario GMT +2. Ora sono le: 01.00.58.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.