Lungi da me il voler polemizzare, ma ...
Originariamente inviato da gibra
Scusa ma la sintassi che stai usando non mi pare esista.
L'hai inventata tu?
A prescindere che funziona, se non ricordo male, lavoravo con database Access, e, dopo aver creato la query (una simile, che mi faceva il popolamento dei campi di una tabella) sono andato a vedere la sintassi sql e l'ho riportata nel mio progetto visual basic.

Comunque, ho preso quanto da te suggerito (il tuo esempio dell'uso del command e dei paramater)
codice:
 sql2 = "INSERT INTO " + Trim(tabe) + " (idpaz,data,idop,stato,idfass,idrif1,idyyrif1,idora) " _      & "values (@idpaz,@data,@idop,@stato,@idfass,@idrif1,@idyyrif1,@idora)" 
 With cmd   
    Set par = .CreateParameter("@idpaz", adInteger, adParamInput, vista1.ListItems(i).SubItems(2))   .Parameters.Append par   
    Set par = .CreateParameter("@data", adDBDate, adParamInput, datacontcodfisc)   .Parameters.Append par
   Set par = .CreateParameter("@idop", adInteger, adParamInput, vista1.ListItems(i).SubItems(3))   .Parameters.Append par
   Set par = .CreateParameter("@stato", adWChar, adParamInput, 20, "0")   .Parameters.Append par
   Set par = .CreateParameter("@idfass", adInteger, adParamInput, vista1.ListItems(i).SubItems(7))
   .Parameters.Append par
   Set par = .CreateParameter("@idrif1", adInteger, adParamInput, vista1.ListItems(i).SubItems(4))
   .Parameters.Append par
   Set par = .CreateParameter("@idyyrif1", adInteger, adParamInput, vista1.ListItems(i).SubItems(5))
   .Parameters.Append par
   Set par = .CreateParameter("@idora", adInteger, adParamInput, vista1.ListItems(i).SubItems(6))
   .Parameters.Append par
    End With
           cmd.ActiveConnection = dbextfarm    'è la connessione aperta al database       cmd.CommandType = adCmdText  'il Tipo di comando, è semplice testo
     cmd.CommandText = sql2       'il testo del comando, la nostra query
      cmd.Execute

ma il risultato non cambia, sempre 01/01/0001. Vorrà dire che userò il vecchio recordset.

Grazie per il suggerimento.

P.S.: per la cronaca ho provato anche sia type data che datatime, ma nulla.
La cosa strana e che se faccio i due inserimenti 'contemporaneamente' quello con il recordset inserisce la data correttamente

codice:
      
 rsorario.Open Trim(tabella), dbextfarm, adOpenStatic, adLockOptimistic                
 rsorario.AddNew 
 With rsorario 
     .AddNew
        !Data = DateValue(vista1.ListItems(i)):!idpaz = vista1.ListItems(i).SubItems(2)
        !idop = vista1.ListItems(i).SubItems(3): !stato = 0: 
        !idfass =vista1.ListItems(i).SubItems(7): !idrif1 = vista1.ListItems(i).SubItems(4):  
        !idyyrif1 = vista1.ListItems(i).SubItems(5):!idora = vista1.ListItems(i).SubItems(6)
      .Update
      .Close
 End With
Conviene lasciar perdere?

Ancora Grazie