Newsgroup: it.comp.lang.visual-basic
Titolo: [incertezza] vorrei cercare di evitare di aver problemi con le date.

ho notato che il dtpicker ha un valore dataformat. ho provato a metterlo a yyyyMMdd pensando che il suo value si trasformasse in
qualcosa tipo: 20030915... ma non è così.
ho provato a modificare le impostazioni internazionali del sistema in yyyy-MM-dd e il dtpicker mi restituisce il valore
correttamente in base le impostazioni di sistema.
il salvataggio avviene correttamente.
di cosa ho paura? che nelle varie conversioni una data italiana tipo: 08/09/2003 mi venga presa con mese e giorno invertiti di
posto.
può succedere una cosa del genere? come evitarlo?
--
se inserisco manualmente una data nel database come stringa: '20030915' quest'ultimo me la salva correttamente e me la visualizza in
base alle impostazioni internazionali.
--
passando ad altro,
problemino con una query:
'ho questa stringa sql:
strSql = "SELECT Iscritti.codbar AS mioCodBar, Iscritti.Cognome AS mioCognome, Iscritti.Nome AS mioNome, Movimenti.data,
Movimenti.importo, Movimenti.descri FROM Movimenti INNER JOIN Iscritti ON Movimenti.iscritto = Iscritti.id"
'alla quale aggiungo:
strWhere = "(CONVERT(char(10), movimenti.data, 120)>='" + Format(DTPicker1(0).Value, "yyyyMMdd") + "') "
'e poi ancora aggiungo:
strWhere = strWhere + "AND (CONVERT(char(10), movimenti.data, 120)<='" + Format(DTPicker1(1).Value, "yyyyMMdd") + "') "
in pratica strsql alla fine risulterà essere strSql+strWhere.
Se dtpicker1(0).value = 01/09/2003 e dtpicker1(1).value = 03/09/2003
presumo che con questa query visualizzerò tutti i movimenti dal 01/09 al 03/09.
invece la query mi esclude quelli del 03. perchè?

 problemino con una query:
allora diciamo che correttamente bisogna comporre la stringa con between..
...e il convert non serve se imposto la data in modo nativo. :o)
lentamente la confusione se ne sta andando ;-)
nel prox post vi passo il codice vb6 corretto :o) (spero)
che potrebbe essere utile a qualkuno.

-la strSql è la stessa del primo post.
-check1(0) specifica se tener conto di dtpicker1(0) nella query.
-check1(1) specifica se tener conto di dtpicker1(1) nella query.
-nel caso che sia check1(0) che check1(1) siano = 1, tengo in considerazione la parte del ciclo con BETWEEN escludendo l'altra
parte.
Mi sembra formalmente corretto e non ho rilevato problemi.
questo è il codice:
    If (Check1(0).Value = 1) And (Check1(1).Value = 1) Then
        strWhere = "movimenti.data BETWEEN '" + Format(DTPicker1(0).Value, "yyyyMMdd") + "' AND '" + Format(DTPicker1(1).Value,
"yyyyMMdd") + "'"
    Else
        If Check1(0).Value = 1 Then
            If strWhere = "" Then
                strWhere = "movimenti.data >= '" + Format(DTPicker1(0).Value, "yyyyMMdd") + "' "
            Else
                strWhere = strWhere + "AND movimenti.data >= '" + Format(DTPicker1(0).Value, "yyyyMMdd") + "' "
            End If
        End If
        If Check1(1).Value = 1 Then
            If strWhere = "" Then
                strWhere = "movimenti.data <='" + Format(DTPicker1(1).Value, "yyyyMMdd") + "' "
            Else
                strWhere = strWhere + "AND (movimenti.data <='" + Format(DTPicker1(1).Value, "yyyyMMdd") + "' "
            End If
        End If
    End If