Newsgroup: it.comp.appl.access
Titolo: Aggiornamento con valori progressivi

Salve,
Premendo sul pulsante pippo della maschera1 vorrei che nella tabella 
pagamenti venissiro rinumerati i records e che il valore venisse scritto nel 
campo nrrata
Ho provato a scrivere in vb il codice sql ottenuto creando una query di 
aggiornamento
miosql=UPDATE [TABELLA PAGAMENTI] SET [TABELLA PAGAMENTI].Nrrata = 1 WHERE 
(([TABELLA PAGAMENTI].prgsoluni)=" & "'" & Me.[prgsoluni] & "'" & "));"
Il problema sta nel fatto che tutti i records avranno scritto in nrrata il 
valore 1.
Come faccio a fargli incrementare il valore di nrrata di 1 unità ogni 
record?
Grazie tante
Ciao
Carla 


Ciao Carla,
via query la vedo dura, ma via recordset no.
Dim rst as DAO:recordset
dim i as integer
dim Mysql as string
set rst = currentdb.openrecordset("Qui ci metti la tua query di selezione")
with rst
i = 1
do
.edit
!Tuocampo = i
.update
i = i +1
.movenext
loop until .eof
end with
rst.close: set rst = nothing
FAcci sapre
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

 ha scritto nel messaggio 
news:dkn0qm$7bd$1...@area.cu.mi.it...

Grazie mille ha funzionato, allora ne approfitto per un ulteriore consiglio 
sempre relativo a questo argomento ma per altri errori
Ho 1 problema su queste due istruzioni:
strSQL = "INSERT INTO [TABELLA PAGAMENTI] " & "(prgsol,Prgsoluni, Nrrata,
Importorata, IMPORTOPAGRATA) VALUES ('" & Me!prgsol & "','" & Me!prgsoluni &
"'," & i & "," & 0 & "," & 0 & ")"
Così scritta funziona ma io gli vorrei dire anche di ordinare il tutto per
nrrata ed ho trovato che il relativo sql è
ORDER BY [TABELLA PAGAMENTI].Nrrata;
ma non so a che punto e con quali accorgimento va inserito
L'altra istruzione è questa e cancella in tabella pagamenti tutti i records
dove importorata=0 e prgsoluni di tabella pagamenti è = a quello di me
For i = NumRec To frazpagvar + 1 Step -1
miosql = "DELETE [TABELLA PAGAMENTI].ImportoPagrata, [TABELLA
PAGAMENTI].prgsoluni FROM [TABELLA PAGAMENTI]WHERE ((([TABELLA
PAGAMENTI].ImportoPagrata)=0) AND (([TABELLA PAGAMENTI].prgsoluni)=" & "'" &
Me.[prgsoluni] & "'" & " ));"
DoCmd.RunSQL miosql
Next i
il problema è che per ogni "i" mi cancella tutti i records invece che solo
quello corrente. Avevo pensato di risolverlo aggiungendo questa istruzione
 and rata =i
ma non so a che punto e con quali accorgimento va inserito e soprattutto se
tale istruzione è adatta
Grazie
Ciao
Carla

 Carla


 ha scritto nel messaggio 
news:dko3bl$djc$1...@area.cu.mi.it...

Ciao e innanzitutto grazie ma purtroppo sono ancora alle prime armi e non 
riesco a capire cosa mi volevi dire...
2° istruzione
Ti faccio un esempio della mia situazione
Maschera principale formata
prgsoluni  frazpag (che riporta il numero di rate in cui è suddiviso
l'importodapagare)
a1               5
....             ....
Tabella Pagamenti è così formata
prgsoluni   nrrata  importorata importopagato
a1          1          10                 0
a1          2          20                 0
a1          3            5                 5
a1          4          15                 0
a1          5          50                 25
Vorrei che quando vado a diminuire il numero di rate (e quindi il valore di
frazpag) mi eliminasse le rate di differenza presenti in tabella pagamenti
Gli ho fatto quindi controllare se il valore digitato in frazpag è inferiore
al numero effettivo di records presenti nella tabella pagamenti. Nel caso
affermativo mi deve togliere i records di differenza per quel sollecito solo
se non ci sono pagamenti registrati (e quindi importopagrata=0).
Quindi in questo caso se in frazpag al posto di 5 ci scrivo 3 mi deve
togliere solo 2 rate tra le non pagate (1,2,4) di prgsoluni a1
Dim frazpagvar As Integer
NumRec = DCount("*", "TABELLA PAGAMENTI", _
   "Prgsoluni='" & Me!prgsoluni & "'")
frazpagvar = FrazPag.Value
If frazpagvar < NumRec Then
 miosql = "DELETE [TABELLA PAGAMENTI].ImportoPagrata, [TABELLA
PAGAMENTI].prgsoluni FROM [TABELLA PAGAMENTI]WHERE ((([TABELLA
PAGAMENTI].ImportoPagrata)=0) AND (([TABELLA PAGAMENTI].prgsoluni)=" & "'" &
Me.[prgsoluni] & "'" & " ));"
    DoCmd.RunSQL miosql
Eseguendo tale istruzione il risultato è che mi toglie 3 rate anzichè 2,
quindi mi toglie tutte quelle non pagate e non solo quelle da me richieste
L'istruzione successiva, che funziona ma ti allego solo per farti vedere 
nell'insieme la situazione, è quella con cui vb mi rinumera le rate rimaste
Dim rst As Recordset
Dim n As Integer
Dim Mysql As String
Set rst = CurrentDb.OpenRecordset("SELECT [TABELLA PAGAMENTI].Nrrata, 
[TABELLA PAGAMENTI].prgsoluni FROM [TABELLA PAGAMENTI]WHERE ((([TABELLA 
PAGAMENTI].prgsoluni)=" & "'" & Me.[prgsoluni] & "'" & "));")
With rst
n = 1
Do
.Edit
!Nrrata = n
.Update
i = i + 1
.MoveNext
Loop Until .EOF
End With
rst.Close: Set rst = Nothing
Aiutooo....Come posso risolvere la questione?
1° istruzione
La prima istruzione invece era nel caso opposto a quello sopra ossia quando 
vado ad aumentare il numero di rate
In questo caso ho inserito questa istruzione che vorrei completare con 
l'ordinamento delle rate
If frazpagvar > NumRec Then
    For i = NumRec + 1 To frazpagvar
       strSQL = "INSERT INTO [TABELLA PAGAMENTI] " & "(prgsol,Prgsoluni, 
Nrrata, Importorata, IMPORTOPAGRATA) VALUES ('" & Me!prgsol & "','" & 
Me!prgsoluni & "'," & i & "," & 0 & "," & 0 & ")"
DoCmd.RunSQL strSQL
next i
ma come ti dicevo non riesco a posizionare l'istruzione order by perchè se 
provo ad inserirlo in fondo all'istruzione
mi da il seguente errore
Se invece provo ad accodare il codice che mi hai dato in fondo alla mia mi
da il seguente errore
Errore di run-time 3137:Punto e virgola mancante alla fine dell'istruzione 
sql
E visto la mia poca esperienza non so come correggerlo
Mi puoi aiutare?
Grazie
Ciao
Carla

 Mi puoi aiutare?
Questa me la devi spiegare meglio, dicendo cosa vuoi no come ottenerlo.
Non ti preoccupare oggi sono qui e ti posso aiutare


 ha scritto nel messaggio 
news:dkpn3b$vjh$1...@area.cu.mi.it...

Hai ragione ma per me č un tale macello che per spigarti troppo mi 
ingarbuglio anch'io
Io ho semplicemente questa istruzione
If frazpagvar > NumRec Then
 For i = NumRec + 1 To frazpagvar
strSQL = "INSERT INTO [TABELLA PAGAMENTI] " &
"(prgsol,Prgsoluni, Nrrata, Importorata, IMPORTOPAGRATA) VALUES ('" &
Me!prgsol & "','" & Me!prgsoluni & "'," & i & "," & 0 & "," & 0 & ")"
DoCmd.RunSQL strSQL
 next i
vorrei farsě che dopo l'inserimento di nuove righe, per ogni prgsoluni, mi 
ordinasse i pagamenti per nrrata
E' fattibile?
Ciao
Grazie
Carla

 Carla
-- 



Ciao,
sto provando ad inserire il tuo sql in vba
Dim rstPagamenti As DAO.Recordset
Dim strCercaPagamenti As String
Dim iEliminazione As Integer
Dim iEliminati As Integer
Dim Icontatore As Integer
strCercaPagamenti = "select * from [tabella pagamenti] where prgsoluni = " & 
"'" & Me.FrazPag & "'" & " order by nnrata"
iEliminazione = Me.FrazPag.OldValue - FrazPag.Value
Set rstPagamenti = CurrentDb.OpenRecordset(strCercaPagamenti)
With rstPagamenti
Do
.....
Mi sono già fermata perchè mi da errore di run-time 3061:parametri 
insufficienti. previsto 1
Che vuol dire?
Grazie
Ciao
carla

 carla
-- 
