Newsgroup: it.comp.appl.access
Titolo: data: tipo non corrispondente

ciao a tutti
 
in un modulo cerco di accodare delle date in una tabella;
 
la data in tb è tipodati Data/ora
 
e nel modulo la variabile
è dichiarata come "Date".
 
Se invece metto tutto come "String"
l'errore non c'è
 
Dove sbaglio?
 
Grazie

Diciamo che dipende da come gestisci l'accodamento.
Se usi una Query PARAMETRICA di Tipo INSERT non è possibile vi siano problemi, se invece usi una Query UPDATE non Parametrica, incorri negli errori dovuti all'Accezione ANGLOSASSONE... sicuramente.
 
Il 05/01/2017 per te è il 5 Gennaio, ma per JET è Primo Maggio... fai attenzione...
 
Devi rispettare il Formato, nel sito di Karl trovi come Formattare le Date.
 
Si dovrebbe imparare ad usare i PARAMETRI nelle query per evitare proprio l'obbligo delle Formattazioni di Data/Stringa ecc...
 
@Alex


grazie Alex
ho fatto
 
Dim DataFatt As Double
DataFatt = CLng(RS1_2!DataDocFo)
e funziona


e in questo caso?
 
IIf(RS1_2!IdTipoDocumento = 1, CLng(RS1_2!DataDocFo), "")
se è "", mi da di nuovo tipo non corrispondente
come devo fare?


Che criterio sarebbe "" in un campo Data...?
 
@Alex


ciao Alex
ma anche se metto Null anzichè "" non cambia
 
se poi faccio:
If RS1_2!IdTipoDocumento = 1 Then DataFatt = CLng(RS1_2!DataDocFo)
nella tabella mi scrive come data 01/01/16.
 
 
DataFatt = IIf(RS1_2!IdTipoDocumento = 1, DataFatt = CLng(RS1_2!DataDocFo), "")


questo è il codice in questione avuto da Akery
 
Function Transpose()
 
  CurrentDb.Execute "DELETE * FROM TbNumDocFornitoriOriz"
' abilita la riga se ti serve pulire la tabella di destinazione
 
  Dim RS1_1 As Recordset, RS1_2 As Recordset, RS2 As Recordset
  Dim SQL As String, SourceTable As String, TargetTable As String
  Dim nFatt As String, nNCred As String
  Dim DataFatt As Double, DataNCred As Double
 
  '-- Definizioni --
  SourceTable = "TbNumDocFornitori"
  TargetTable = "TbNumDocFornitoriOriz"
  '------------------
 
  SQL = "SELECT " & SourceTable & ".IdFatturaFo FROM " & SourceTable
  SQL = SQL & " GROUP BY " & SourceTable & ".IdFatturaFo;"
 
  Set RS1_1 = CurrentDb.OpenRecordset(SQL, dbOpenDynaset)
  Set RS1_2 = CurrentDb.OpenRecordset(SourceTable, dbOpenDynaset)
  Set RS2 = CurrentDb.OpenRecordset(TargetTable, dbOpenDynaset)
 
  Do Until RS1_1.EOF
    Do Until RS1_2.EOF
      If RS1_2!IdFatturaFo = RS1_1!IdFatturaFo Then
        nFatt = nFatt & IIf(RS1_2!IdTipoDocumento = 1, RS1_2!NumeroDocFo, "") & "-"
        nNCred = nNCred & IIf(RS1_2!IdTipoDocumento = 2, RS1_2!NumeroDocFo, "") & "-"
        DataFatt = IIf(RS1_2!IdTipoDocumento = 1, DataFatt = CLng(RS1_2!DataDocFo), "")
 
      End If
      nFatt = Replace(nFatt, "--", "-")
      nNCred = Replace(nNCred, "--", "-")
 
      RS1_2.MoveNext
      Loop
      nFatt = Left(nFatt, Len(nFatt) - 1)
      nNCred = Left(nNCred, Len(nNCred) - 1)
      RS2.AddNew
      RS2!IdFatturaFo = RS1_1!IdFatturaFo
      RS2!NumeroFattFo = nFatt
      RS2!NumeroNCredFo = nNCred
      RS2!DataFattFo = DataFatt
      RS2.Update
      nFatt = ""
      nNCred = ""
      RS1_2.MoveFirst
      RS1_1.MoveNext
 
  Loop
 
End Function


Come scrivi NULL nel codice...? Mostra la sintassi.
Il Campo accetta Valore Nullo...?
 
@Alex


grazie Alex
ho provato cosi
DataFatt = IIf(RS1_2!IdTipoDocumento = 1, DataFatt = CLng(RS1_2!DataDocFo), "")
DataFatt = IIf(RS1_2!IdTipoDocumento = 1, DataFatt = CLng(RS1_2!DataDocFo), null)
DataFatt = IIf(RS1_2!IdTipoDocumento = 1, DataFatt = CLng(RS1_2!DataDocFo), Len(vbnullstring))
si il campo accetta il valore nullo