Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Conteggio numero di record in una query

868 views
Skip to first unread message

Giordano

unread,
May 16, 2002, 7:48:24 PM5/16/02
to
Un saluto a tutti,
spero possiate aiutarmi, non ho + il fisico per fare nottate davanti al
pc...

Semplice database per la gestione della contabilità.

Oggetti d'interesse:
Insegnanti: Query con un solo campo (Sottovoce1) contenente l'elenco degli
insegnanti.
InsegnantiCambioNomi: Maschera composta da due campi testo (VecchioNome e
NuovoNome) e un pulsante il cui click fa partire una query di aggiornamento
x sostituire eventualmente un insegnante con un altro.
InsegnantiQNomi: Query con un solo campo (Sottovoce1Q) generata dal
filtraggio di Insegnati con ciò che è scritto in NuovoNome, strutturata in
modo tale che se si tenta di cambiare il nome di un insegnante con uno che è
già presente nella query il numero di record presenti sarà 1, se invece il
nome immesso in NouvoNome è realmente nuovo la query sarà vuota con un num
di record pari a 0.
RinominaInsegnante: Query di aggiornamento.

Quello che a me serve e che prima di far partire la query di aggiornamento
si verifichi che il nome del Nuovo insegnate non sia già presente nella
lista, cioè nella query Insegnanti. Come strategia ho pensato di inserire
nella sub click del pulsante un controllo if...then con il quale conto il
numero di record presenti nella query InsegnantiQNomi, se il num è 0 procedo
con la query di aggiornamento, altrimenti blocco tutto e mando un alert.

Il problema, purtroppo, è nella stesura del codice. Avendo scarsa conoscenza
di VB e VBA sono riuscito (sarà poi così??) a capire che devo creare un
recordset associarlo a InsegnantiQNomi per poi contare i record con
recordcount. Ma, ammesso che sia giusto il ragionamento, non sono riuscito a
produrre il codice.

Qualcuno potrebbe aiutarmi inviandomi il codice da inserire dentro il
controllo?

If --------codice num record di InsegnantiQNomi = 0 -------- Then

stDocName = "RinominaInsegnante"
DoCmd.OpenQuery stDocName, acNormal, acEdit
Conferma_nomi
DoCmd.Close
Else:
MsgBox "Il nome dell'insegnante immesso nel campo è già presente nella
lista DoCmd.Closeinsegnanti.", vbExclamation, "Errore"

Vi ringrazio in anticipo con un'ultima richiesta: inviatemi il codice per
intero senza omettere quello che per voi, magari, è sottinteso.

Ciao.
Giordano.


Roberto Pasqualini

unread,
May 17, 2002, 2:31:15 AM5/17/02
to

"Giordano" <giord...@tin.nospam.it> ha scritto nel messaggio
news:czXE8.64777$zW3.9...@news1.tin.it...
Dim rst as DAO.recordset
Dim dbs as Database
set dbs = currentdb
set rst = dbs.openrecordset("InsegnantiQNomi",dbopenDynaset)
If rst.recordcont = 0 then
..........

... al temine della routine
rst.close
dbs.close
set rst = nothing
set dbs = nothing

Devi poi impostare i riferimenti alle librerie DAO nelle proprietà del
progetto.

Ciao, Roberto

Giordano

unread,
May 18, 2002, 2:31:57 PM5/18/02
to

"Roberto Pasqualini" <rpasq...@sidesoft.it> ha scritto nel messaggio
news:Ts1F8.64931$zW3.9...@news1.tin.it...

>
> "Giordano" <giord...@tin.nospam.it> ha scritto nel messaggio
> news:czXE8.64777$zW3.9...@news1.tin.it...
> > Un saluto a tutti,
> > spero possiate aiutarmi, non ho + il fisico per fare nottate davanti al

>cut

> >
> > Ciao.
> > Giordano.
> >
> >
> Dim rst as DAO.recordset
> Dim dbs as Database
> set dbs = currentdb
> set rst = dbs.openrecordset("InsegnantiQNomi",dbopenDynaset)
> If rst.recordcont = 0 then
> ..........
>
> ... al temine della routine
> rst.close
> dbs.close
> set rst = nothing
> set dbs = nothing
>
> Devi poi impostare i riferimenti alle librerie DAO nelle proprietà del
> progetto.
>
> Ciao, Roberto
>
>


Ciao Roberto,
innanzitutto ti ringrazio per avermi risposto così presto, ho fatto quello
che mi hai suggerito ma ci deve essere qualche problema...
Appena clicco sul pulsante della maschera compare un messaggio di errore
"Parametri insufficienti. Previsto 1".
Non so che dirti.
Ho inviato un nuovo post con le specifiche con le quali sto lavorando (S.O.,
ver di Access, Riferimenti...) fosse questo il problema??
Se ti viene in mente qualcosa...
Ciao.
Giordano


Roberto da casa

unread,
May 19, 2002, 7:00:32 AM5/19/02
to

"Giordano" <giord...@tin.nospam.it> ha scritto nel messaggio
news:x6xF8.69016$zW3.1...@news1.tin.it...

Dall'errore che ricevi significa che InsegnantiQNomi è una query
parametrica, nel qual caso non puoi aprire su di essa un recordset usando la
tecnica suggerita da Roberto Pasquali; per farlo vai sul Sito Comune (link
qui sotto) e leggi nella Sezione Queries cosa dice la FAQ di Federico
Luciani intitolata "Aprire una query parametrica da codice VBA.".
Comunque, come ti ho detto precedentemente, puoi non aprire alcun recordset,
ma usare una DCount (vedi help).

--
Roberto

---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Roberto da casa

unread,
May 19, 2002, 7:04:45 AM5/19/02
to

"Giordano" <giord...@tin.nospam.it> ha scritto nel messaggio
news:czXE8.64777$zW3.9...@news1.tin.it...

Invece di aprire un recordset sulla query InsegnantiQNomi, per contare le
righe di detta query, usa una DCount (vedi help).

If DCount("*", "InsegnantiQNomi ") = 0 Then
' apri la maschera RinominaInsegnante
Else
' messaggio di errore
End If

Giordano

unread,
May 20, 2002, 10:03:08 AM5/20/02
to

"Roberto da casa" <r.ma...@libero.it> ha scritto nel messaggio
news:oELF8.80332$US3.1...@twister1.libero.it...
>
cut

>
> Invece di aprire un recordset sulla query InsegnantiQNomi, per contare le
> righe di detta query, usa una DCount (vedi help).
>
> If DCount("*", "InsegnantiQNomi ") = 0 Then
> ' apri la maschera RinominaInsegnante
> Else
> ' messaggio di errore
> End If
>
> --
> Roberto
>
> ---------------------------------------------
> il Sito Comune di it.comp.appl.access:
> http://www.sitocomune.com
> ---------------------------------------------
>

Funzione tutto.
Grazie.


0 new messages