Newsgroup: it.comp.appl.access
Titolo: Function accodamento tabella

Salve a tutto il NG.
Sono quì ancora a tentare un aiutino.....:)
Ho creato una function per far in modo che dei dati di una tabella passino
ad un'altra che ha come campi gli stessi.....
Fin quì tutto ok ed ecco la function:
Public Function CopiaRecord()
Dim db As Database
Dim rst As Recordset, rst1 As Recordset
Dim ContatoreVolante As Integer
Set db = CurrentDb
Set rst = db.OpenRecordset("DettaglioOfferta", dbOpenDynaset)
Set rst1 = db.OpenRecordset("TabellaTemp", dbOpenDynaset)
ContatoreVolante = DMax("[Riga]", "[TabellaTemp]") + 3
    rst.MoveFirst
With rst1
Do Until rst.EOF
    .AddNew
    rst1!Riga = ContatoreVolante
    rst1!IDOrdini = Forms!Ordini01!IDOrdini
    rst1!IDProdotto = rst!IDProdotto
   .Update
    rst.MoveNext
    ContatoreVolante = ContatoreVolante + 3
Loop
End With
rst.Close: rst1.Close
Set rst = Nothing
Set rst1 = Nothing
Set db = Nothing
End Function
Tutto sembra funzionare. Solo che ho 2 problemini:
1) La tabellaTmp è vuota e serve (come potete intuire dal nome) da
passaggio. Il primo problema nasce dal fatto che questa tabella ogni volta
viene cancellata e quindi il valore di ContatoreVolante è Null...dandomi
sempre errore.
Non riesco a capire come funziona il dmax da codice....ci sono sempre dei
cambiamenti. Vorrei fare come da macro questo discorso:
ContatoreVolante = IIf(IsNull(DMax("[Riga]", "[TabellaTemp]") + 3), 1)
Solo che mi dà errore: Argomento non facoltativo. Vorrei solo dirgli che se
lo trova null di impostarlo a 1 ma non ci riesco.
2) Vorrei sapere se è possibile con il codice far capire alla macchina
quando fa il .AddNew di selezionare i record in ordine crescente in base ad
un campo della tabella DettaglioOfferte.
Scusate se sono stato lungo.....
P.S. Grazie ancora per il vostro gentile aiuto
Ultra

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

 Roberto
Roberto grazie mille Funziona benissimo! .......mi spiace quasi a chiederlo
ma ci sono stato tutta ieri sera fino alle 2 di notte e non ci sono
riuscito......avrei bisogno di scrivere:
Set rst = db.OpenRecordset("SELECT * FROM DettaglioOfferta WHERE IDOfferta =
Forms!SelezionaOfferta!IDOfferta ORDER BY Riga;", dbOpenDynaset)
Quando lancio la function mi dà perennemente errore....mi dice "Tipo non
valido previsto 1"
Che vuol dire? Dovrei fare in modo che quando rst seleziona i dati con la
SELECT mi prenda solo quelli che mi dice il cliente con quella maschera
nominata SelezionaOfferta e me li metta in ordine crescente....si può fare??
Grazie Roberto!
Ultra

 Ultra
Se IDOfferta è di tipo numerico o contatore, prova così:
Set rst = db.OpenRecordset("SELECT * FROM DettaglioOfferta WHERE IDOfferta
=" & Forms!SelezionaOfferta!IDOfferta & " ORDER BY Riga;", dbOpenDynaset)



Provato ma mi continua a dare errore....IDOfferta č numerico (contatore con
Dmax). Ora l'errore č:
Errore di RUNTIME '3075'
Errore di sintassi (operatore mancante) nell'espressione della query
'IDOfferta'=2 ORDER BY riga',
Che si puň fare? Non mi funziona la guida in linea di VBA e non capisco che
errore č......(apparte la mia ignoranza in materia :P)
Grazie ancora Roberto per il tuo aiuto
Ultra


Non è che vuole gli apici nella stringa SQL? A me è già capitato, ma non ho
il codice a portata di mano.
Prova così:
Set rst = db.OpenRecordset("SELECT * FROM DettaglioOfferta WHERE " & Chr(34)
& "IDOfferta
=" & Forms!SelezionaOfferta!IDOfferta & Chr(34) & " ORDER BY Riga;",
dbOpenDynaset)
Chr(34) dovrebbe essere l'apice singolo. Mi pare che la clausola WHERE debba
essere scitta con gli apici.
Se non funziona, puoi fare un po' di prove con le parentesi, o con il codice
Chr dei doppi apici (che però non ricordo qual'è).
Spero ti sia d'aiuto. :-)
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto nel messaggio
news:8%zla.121317$i26.3...@news2.tin.it...

Penso proprio che la soluzione giusta sia quella di yronium.
Provala.
