Newsgroup: it.comp.appl.access
Titolo: recordsetclone.recordcount

domanda:
posso usare il risultato di recordcount in qualche maniera per poter
visualizzare, in una casella di testo non associata, il numero di rata
che sto inserendo relativa alla tale fattura?
se si, quale sarebbe la sintassi che non mi torna?
se no, sto cazzando?
(maschera Fattura con IDFattura, numRate etcetc - maschera Rate con
IDFattura, IDRata, importo, scadenza)
creo la textbox non associata "nRata" e volevo mettergli un contatore
per sapere quale rata stessi inserendo per IDFattura.
grazie,
ciao.
-g-

Giacomo wrote:

Ti consiglio di procedere diversamente.
Aggiungi un campo "NumRata" numerico intero
che valorizzi ogni volta che inserisci una nuova rata.
Sull'evento prima di inserire puoi scrivere un codice del genere:
dim rs AS new ADODB.recordset
rs.activeconnection = currentproject.connection
rs.Open "SELECT NUMRATA FROM Rate WHERE IDFattura = " & Me.IDFattura & "
ORDER BY NUMRATA DESC "
if rs.eof then
  me.NumRata = 1
else
  me.NumRata = rs![NumRata] + 1
end if
rs.close
set rs = nothing
in questo modo hai la numerazione progressiva automatica del numero di rata
per ogni fattura.
Antonio.

 ha scritto nel messaggio
news:3d86fdc8....@powernews.inwind.it...

Se la tabella che è origine record della maschera Rate si chiama tblRate.
Se IDFattura è un campo numerico.
Nell'origine controllo della casella di testo non associata chiamata nRata
scrivi:
= DCount("*"; "tblRate"; "IDFattura =" & [IDFattura])
Così in nRata ti troverai il numero di record già inseriti nella tblRate per
quell'IDFattura.
Naturalmente per sapere quale rata stai per inserire è sufficiente sommare
1, ovvero:
= DCount("*"; "tblRate"; "IDFattura =" & [IDFattura])+1
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

= DCount("*"; "tblRate"; "IDFattura =" & [IDFattura])+1
ho provato ma se poi scorro indietro con i tasti di navigazione tra
record non mi va, ovvero mi da giustamente il numero di rate inserite
ma ovviamente non si decrementa al acPrevious non si decrementa...
ora provo anche la soluzione di Antonio e poi vi faccio sapere,
comunque intanto grazie 
ciao
-g-

 ha scritto nel messaggio
news:3d872be2....@powernews.inwind.it...

Non so dove tu abbia inserito la casella di testo non associata  nRata, ma
io pensavo di inserirla nella maschera principale e non nella sottomaschera.


Antonio.
ma non e un po' uno "spreco" di dati e di codice fare in questa
maniera? (in fin dei conti sapere il numero di rata non e un dato, e
un metadato che serve solo al momento dell'inserimento delle rate e
mai piu!) e non si rallenta a fare una query, anche se banale, ogni
volta che si inserisce una rata?
e poi, ad ogni modo, per decrementare (allo scorrere avanti o indietro
tra le rate della stessa fattura) il valore come dovrei fare?
non riesco ad operare sul campo numRata al click degli eventi
acPrevious, acNext, acLast...
se metto una riga di codice tipo: me.NumRata = Me.NumRata +1 oppure =
Me.NumRata-1 al click di acPrevious, mi da un errore "impossibile
assegnare valore all'oggetto"...?!?!
non si possono forse fare assegnamenti o altre operazioni nelle
routine dei DoCmd.GoToRecord, , acPrevious?
spero di essere stato chiaro
grazie ancora (a proposito la tua soluzione di ieri sul recordset ha
funzionato quindi doppiamente grazie)
ciao
-g-

io pensavo di inserirla nella maschera principale e non nella sottomaschera.
non che cambi molto ma e + semplice lavorare nella stessa
sottomaschera Rate.
e poi comunque all'evento nuovoRecord il tuo metodo funziona, non
funziona nel momento in cui vado al primo record, o al record
precedente o al record successivo della sottomaschera Rate 
praticamente ho la maschera Fatture con i suoi tasti di navigazione
tra record e all'interno di Fatture ho la sottomaschera Rate con i
tasti di navigazione creati da me per aggiungereNrecord, andare alla
prima rata di tale fattura, andare alla precedente ed alla successiva
(che naturalmente dovra gia essere inserita)
e mentre "navigo" il contatore nRAta dovra essere incrementato o
decrementato a seconda di quale rata io stia guardando.
forse ora sono stato + chiaro?
spero.
la tua soluzione va quindi bene ma solo se dovessi soltanto inserire
nuovi record xe nel momento in cui appunto torno alla prima (o alla
precedente) rata di Fattura x, nRata rimane il numero totale delle
rate che non e significativo per tale Rata.
ciao e grazie ancora
-g-

 -g-
Spero di aver capito il problema.
Allora:
1: Nella maschera principale inserisci un controllo non associato e chiamalo
NumeroRata
2: Nella sottomaschera aggiungi una routine evento su corrente
3: Scrivi il seguente codice:
Private Sub Form_Current()
  If Me.NewRecord Then
    Me.Parent.NumeroRata = Me.Recordset.RecordCount + 1
  Else
    Me.Parent.NumeroRata = Me.Recordset.AbsolutePosition + 1
  End If
End Sub
In questo modo il controllo NumeroRata contiene il numero di record corrente
della sottomaschera.
Prova e fammi sapere.
Antonio.

 ha scritto nel messaggio
news:3d8734cf....@powernews.inwind.it...

Allora  numera progressivamente i record della sottomaschera.
Inserisci la casella di testo non associata nRata nel corpo della
sottomaschera e nella sua origine controllo prova a scrivere:
= DCount("*"; "tblRate"; "IDFattura =" & [IDFattura] & " And IDRata <=" &
[IDRata])


[IDRata])
questo mi pare sia ok!
faccio due o tre test e vediamo
grazie nuvamente!
-g-

[IDRata])
ciao, ho testato ed ho fatto cosi:
=DCount("*","Rate","IDFattura =" & [IDFattura] & " And IDRata <" &
[IDRata])+1
ed ora e perfetto, come scritto da te andava da 0 a x-1, ovviamente ma
rata 0 per il cliente era poco significativo quindi e bastato mettere
un +1
inoltre mettendo il <= ripeteva due volte il primo numero "andando
avanti" e ripeteva l'ultimo numero "tornando indietro"
ovvero faceva cosi:
acNext scriveva 		1 poi 1 poi 2 poi 3 etc...
acPrevious scriveva 	x, x, x-1, x-2 etc ... 3, 2, 1
ringrazio moltissimo anche Antonio, per ora utilizzero questa
soluzione, in futuro vedro quale sara la migliore (ora ho tempi
stretti!)
ciao e buon lavoro.
alla prossima!
-giacomo-