tuo codice:
sqltable = DB_Connection.Exec(sql)
DB_Connection.Begin
NomeRec_via = DB_Connection.Edit("piancont_via")
NomeRec = DB_Connection.Create("PianCont")
FOR EACH NomeRec_via
sql = "INSERT INTO 'PianCont' ('NumVoce', 'NomeVoce', 'ContrPartSiNo', 'DtPrimoUso')"
sql = sql & " VALUES(NomeRec_via!NumVoce, NomeRec_via!NomeVoce, NomeRec_via!ContrPartSiNo, NomeRec_via!DtPrimoUso) ;"
NomeRec = DB_Connection.EXEC(sql) qui si determina lerrore
NEXT
DB_Connection.Commit()
DB_Connection.CLOSE()
Modifica il codice in questo modo:
----------------------------------
NomeRec_via = DB_Connection.Exec("SELECT * FROM piancont_via")
NomeRec = DB_Connection.Create("PianCont") ' questa istruzione credo si posa omettere
FOR EACH NomeRec_via
DB_Connection.EXEC("INSERT INTO 'PianCont' VALUES(" & NomeRec_via!NumVoce &
", '" & NomeRec_via!NomeVoce & "', '" & NomeRec_via!ContrPartSiNo & "', " & NomeRec_via!DtPrimoUso & ")")
NEXT
DB_Connection.Commit()
DB_Connection.CLOSE()
----------------------------------
Come vedi per popolare il result NomeRec_via uso il metodo .Exec che mi sembra più azzeccato del .Edit, dato che devi fare una ricerca dei record.
Poi la tua istruzione sql era errata nella parte dei VALUES, nel modo in cui l'avevi scritta tu i record da inserire non erano i valori del result NomeRec_via ma il testo NomeRec_via!NumVoce, NomeRec_via!NomeVoce ecc.
Poi ho tolto la parte relativa a l'ordine dei campi, basta semplicemente inserire i VALUES nell'ordine in cui sono stati creati i campi.
Come vedi per scrivere una istruzione lunga puoi andare tranquillamente a capo dopo & senza bisono di utilizzare come hai fatto tu:
sql = "CREATE TABLE 'PianCont' ("
sql = sql & " 'NumVoce' INTEGER PRIMARY KEY,"
Infine, per inserire i dati nella tabella PianCont vado direttamente con il metodo .Exec della connection, senza far riferimento al result NomeRec.
Non ho provato il codice ma dovrebbe esere ok. Fammi sapere se và bene, ciao.