Newsgroup: it.comp.appl.access
Titolo: Query di Accodamento su due Tabelle ?

Salve al NG
Ho bisogno di duplicare i dati presenti in una maschera "Ms_Contratti".
La situazione è la seguente:
ho una prima tabella "Tb_Contratti" contenente i campi:
ID_Contratto (Contatore)
Nr_Contratto
Nr_Rinnovo
DataInizioContratto
DataFineContratto
....
ho una seconda tabella "Tb_SottoContratti" contenente i campi:
ID_Contratto (Campo Numerico)
Nr_Vagone
Dato_A
Dato_B
....
Le due tabelle sono collegate tramite il campo ID_Contratto con relazione
uno a molti.
La maschera "Ms_Contratti" visualizza i dati contenuti nella tabella
"Tb_Contratti", e contiene inoltre la sottomaschera "STMs_SottoContratti"
che visualizza, in modalità maschere continue, i dati presenti nella tabella
"Tb_SottoContratti" , il campo ID_Contratto collega le due Maschere.
Ora l'utente in caso di rinnovo del contratto, deve reinserire gli stessi
identici dati del vecchio contratto, incrementando di una sola unità  il
campo Nr_Ronnovo ed aggiornando il campo DataFineContratto.
Avrei quindi bisogno di duplicare tramite un pulsante a cui associare una
query o del codice ...., i dati visualizzati dalla Maschera e dalla
Sottomaschera, accodandoli alle relative tabelle, con aggiornamento del
Campo ID_Contatore ed incrementando di una unità il campo Nr_Rinnovo.
Ho guardato un pò in giro su vari siti ed anche sul Sito Comune, ma non mi
sembra di aver visto niente che mi possa aiutare, a sinceramente non saprei
come fare.
Spero di essere stato chiaro e di non aver tralasciato nessuna informazione
utili per chi volesse aiutarmi
Grazie
Charliebo59

 ha scritto nel messaggio
news:TCzme.960316$b5.41...@news3.tin.it...

Ciao
Prova ad usare questo codice nella maschera principale basata su
Tb_Contratti
'&&&&&&&&&&&&&&&&&&&&&&
Dim TUADATAFINECONTRATTO as Date
Dim NUOVO_ID As Integer
Dim strsql As String
TUADATAFINECONTRATTO = InputBox("inserisci la data di fine: ", "Richiesta")
TUADATAFINECONTRATTO = CDate(TUADATAFINECONTRATTO)
strsql = "INSERT INTO Tb_Contratti (  NR_Contratto, Nr_Rinnovo,
Datainiziocontratto, datafinecontratto )"
strsql = strsql & " SELECT Tb_Contratti.NR_Contratto, '"
strsql = strsql & Me.Nr_Rinnovo + 1 & "' , Tb_Contratti.Datainiziocontratto,
#" & TUADATAFINECONTRATTO & "#"
strsql = strsql & " FROM Tb_Contratti WHERE (((Tb_Contratti.ID_Contratto)=
" & Me.ID_Contratto & "));"
DoCmd.RunSQL strsql
NUOVO_ID = DLast("[ID_Contratto]", "Tb_Contratti")
strsql = "INSERT INTO Tb_SottoContratti ( ID_Contratto, Nr_Vagone, Dato_A,
Dato_B )"
strsql = strsql & " SELECT '" & NUOVO_ID & "' as nuovoID,
Tb_SottoContratti.Nr_Vagone, Tb_SottoContratti.Dato_A,
Tb_SottoContratti.Dato_B"
strsql = strsql & " FROM Tb_SottoContratti WHERE
(((Tb_SottoContratti.ID_Contratto)= " & Me.ID_Contratto & "));"
DoCmd.RunSQL strsql
'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Io l'ho provata e funziona.
Di sicuro si possono fare migliorie , comunque il concetto è quello.
Manca comunque la gestione d'errore nelle varie parti, che non ho messo per
facilitare la comprensione del codice base.
Ciao
REF

 ha scritto nel messaggio
news:ENNme.35108$795.1...@twister1.libero.it...

Grazie REF,
Funziona Egregiamente !!!
L'unica cosa che mi succede, è che il campo ID_Contratto, a volte (non
sempre),  non si incrementa sempre di una unità come quando aggiungo un
contratto manualmente, ma casualmente passando ad esempio da 3 a 7, e non da
3 a 4 come mi sarei aspettato. Posso fare qualcosa per imporre l'incremento
di una unità ?
Grazie.
Ciao
Charliebo59


Ciao Charlie
Il campo è di tipo contatore e si autoincrementa da solo.
Si tratta di un vantaggio non indifferrente, dovendo essere ID_contratto un
identificativo unico.
Potresti provare a lanciare una compattazione dati prima di effettuare la
duplicazione del record, ma in questo caso il contatore aumenterebbe di una
unità solo perchè i record sarebbero contigui..
Tieni presente però che il campo contatore ti deve servire a livello
"nascosto" per riferirti al contratto e a correlarlo ai dettagli, mentre se
vuoi avere un numero progressivo tutto tuo allora lo devi implementare a
parte e gestire come vuoi.
Puoi facilmente modificare il codice che ti ho scritto inserendo il valore
corretto.
Spero di esserti stato d'aiuto.
Ciao
Ref

 ha scritto nel messaggio
news:0vYme.126773$IN.21...@twister2.libero.it...

Ok !
Sei stato di molto aiuto.
Grazie di Tutto.
Ciao
Charliebo59