Newsgroup: it.comp.lang.visual-basic
Titolo: Duplicare un record

Avete qualche suggerimento sulla duplicazione di record?
Non mi serve il metodo più veloce, ma il più comodo
da parte mia da scrivere.
Ho una tabella madre con 30 tabelle figlie.
Mi serve in alcuni casi duplicare un record
sulla tabella madre.
Duplicazione in tutto e per tutto tranne per la chiave
(un semplice max+1 dell' ID).
Il tutto deve essere propagato poi sulle figlie
alla stessa maniera (anche le figlie hanno codice univoco).
Utilizzo ADO via ODBC, sto cercando un metodo comodo,
per non dover scrivere tutto il codice e i comandi sql.
        danilo


Fatti una Sub alla quale passi: tabella origine, tabella destinazione e
clausula WHERE.
Nella Sub fai semplicemente una INSERT INTO [tabella destinazione] SELECT *
FROM [tabella origine] WHERE [criterio]
il tutto vale naturalmente se le tabelle sono strutturalmente uguali, ma
dalle tue indicazioni parrebbe di sì
ciaociao

> per non dover scrivere tutto il codice e i comandi sql.
pardon...non ho letto attentamente il post....

         danilo
ALLORA E' ORRIBILE FAR COSI'
con un pò di SQL si fa senza tanti problemi!
....ma per puro esercizio.....
Presupposti:
Usato ADO e il classico Northwind.mdb
ApreConn e ApreRec son mie funzioni che ritornano un oggetto connection ed
uno recordset
la copia in un altra tabella non c'è...mi si rivolta lo stomaco....
basta che tu al posto di debug.print sostituisco un po di codice per
scrivere nella tabella che vuoi!!!
In una command button scrivi
Private Sub Command5_Click()
Dim MioCampo As Field
Dim MioRec As ADODB.Recordset
Dim MiaConn As ADODB.Connection
Dim MioSQL As String
MioSQL = "SELECT * FROM Customers WHERE CustomerID LIKE ""C%"" "
Set MiaConn = ApreConn
Set MioRec = ApreRec(MioSQL, MiaConn, adOpenForwardOnly)
If MioRec.BOF Then
    Exit Sub
End If
MsgBox "Start"
Do
    Debug.Print "Inizio record copia"
    For Each MioCampo In MioRec.Fields
        If MioCampo.Name = "CustomerID" Then
            Debug.Print "Non lo copio"
        Else
            Debug.Print "Copio " & CStr((MioCampo.Value) & " ") & " Dove
voglio"
        End If
    Next
    MioRec.MoveNext
    Debug.Print "Fine record copia"
Loop Until MioRec.EOF
Debug.Print "FINE"
MsgBox "Fine"
End Sub
Bye Man!
Bleah!
:-P
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel bestiario!
:-)

 ....ma per puro esercizio.....
Comunque grazie mille, vedo se l'idea si può adattare.
[CUT]

 a standardizzare e velocizzare è meglio.
cut
Allora...il problema del SQL è vero...ti può venir fuori una query
chilometrica....
però se usi un qualsiasi tools respiri un po
...per tools....va bene anche access eh!.....
Velocità....
beh qui mi dispiace ma meglio del sql non ce n'è nel tuo caso....
...passi la query al motore db più o meno direttamente e ci pensa lui!
Usando ADO (se usi access DAO) metti di mezzo un sacco di oggetti a logica
"inutili"...
certo per il nostro cervello di "umani" tutto sembra più controllabile di
una query astrusa!
Come sempre il problema è del nostro cervello non dello strumento...
Buon lavoro!


 Buon lavoro!
Beh lo strumento è sempre frutto del cervello....
    danilo

 scriverla per 27 tabelle che mi spaventa un po!
cut
ehm no...allora ...non ti seguo......
Danilo abbi pazienza...tu fai scrivere al tuo cliente in una
textbox...."SELECT * FROM...."etc etc??????
O__O
Mi permetto di dire che se è così c'è qualcosa di "illogico" a meno che:
a) te ne freghi del tuo cliente ...(perchè paga poco...è uno scassacazzi
...etc etc)
b) oppure...E' uno smanettone saccente che crede di fare bene tutto lui
perchè?
Perchè non puoi costringere una segretaria, o un geometra, a sapere l'SQL!
....mentre invece lo dovresti sapere tu......
Scusa è.....se il record che deve duplicare compare da qualche parte
(griglia,form,listview,etc etc) che ti costa mettere un tasto, un label, una
image,"duplica file"....
che apre un COMMAND ed esegue la query???
La query la puoi fare parametrica una volta per tutte e reperire i dati dal
record selezionato no?
forse mi sfuggiranno elementi che non hai detto....ma sembra che TU non
voglia scrivere la query...perchè?
Ci son vincoli di integrità referenziale che incasinano?
Spezza allora.....fatti 10 Query parametriche...e mandale tutte ad un
COMMAND (caso mai dentro una transazione)....tanto eventuali incongruenze
(Campi null,date,numeri)...le hai già validate quando le mostri no?
:-)
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel bestiario!
:-)
---
Messaggio scannerizzato e certificato "Virus free" da AVG free edition.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.759 / Virus Database: 508 - Release Date: 09/09/2004

 (Campi null,date,numeri)...le hai già validate quando le mostri no?
Ecco il problema fondamentale è che ci sono campi testo e campi
numerici e questo mi spiazza un po' quando devo costruirmi la query!
In soldoni mettere o meno le virgolette
    danilo