+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 5 su 5

Formattazione date e numeri in istruzioni SQL

  1. #1
    L'avatar di chico_
    chico_ non è in linea Topo di biblioteca Ultimo blog: Attacco a Oscommerce
    Post
    2,056
    Blogs
    4
    Like Inviati  
    0
    Like Ricevuti  
    0
    Non so se la sezione appropriata per questo post sia VB o SQL....ai moderatori l'ardua sentenza
    Problema:
    Uso la seguente sequenza di istruzioni per popolare una MSHFlexGrid da Db MySql (MySql 4.0.16, VB6 SP6):

    Dim StringaSQL As String
    StringaSQL = "select progressivo as Prog, date_format(data,'%d %m %Y') as Data, " _
    & " codicepcdare as Dare ,codicepcavere as Avere ,Descrizione , format(Importo,2) as Importo " _
    & " from primanota where data >= " & Chr(39) & Format(CDate(TxData.Text), "yyyy-mm-dd") & Chr(39)
    Adodc1.RecordSource = StringaSQL
    Adodc1.Refresh
    
    Funziona tutto egregiamente, ma ho due piccoli problemi di ordine peraltro meramente "estetico":
    1:
    Se uso %d %m %Y il risultato nella Flex e' , ad esempio , 31 12 2005.
    Invece con %d %M %Y il risultato nella Flex e' 31 December 2005.
    Mi piacerebbe avere 31 Dic 2005 (quindi abbreviato e con notazione "italiana")
    2:
    Usando format(importo,2) con un Importo di 2000,20 il risutato nella flex e' 2,000.20...come fare per avere "all'italiana" 2.000,20 ?

    Grazie

    Chico

    p.s.: so che non e' elegante scrivere >= nei confronti tra date, ma il between mi "costringe" ad inserire una data "da quando" e una data "a quando"...io voglio solo filtrare da una determinata data in avanti. Ho alternative?
    ℹ️ Leggi di più su chico_ ...

  2. #2
    L'avatar di dolcissimo
    dolcissimo non è in linea Scribacchino
    Post
    1,267
    Like Inviati  
    0
    Like Ricevuti  
    0
    Per il primo punto prova afare cosi:

    Dim data As Date
    Dim DataLater As String
    
    data = Format(CDate(TxData.Text), "dd-mm-yyyy")
    
    Select Case Mid(data, 4, 2)
        Case Is = "01"
            DataLater = Mid(data, 1, 2) & " " & "Gen" & " " & Mid(data, 7, 4)
        Case Is = "02"
            DataLater = Mid(data, 1, 2) & " " & "Feb" & " " & Mid(data, 7, 4)
        Case Is = "03"
            DataLater = Mid(data, 1, 2) & " " & "Mar" & " " & Mid(data, 7, 4)
        Case Is = "04"
            DataLater = Mid(data, 1, 2) & " " & "Apr" & " " & Mid(data, 7, 4)
        Case Is = "05"
            DataLater = Mid(data, 1, 2) & " " & "Mag" & " " & Mid(data, 7, 4)
        Case Is = "06"
            DataLater = Mid(data, 1, 2) & " " & "Giu" & " " & Mid(data, 7, 4)
        Case Is = "07"
            DataLater = Mid(data, 1, 2) & " " & "Lug" & " " & Mid(data, 7, 4)
        Case Is = "08"
            DataLater = Mid(data, 1, 2) & " " & "Ago" & " " & Mid(data, 7, 4)
        Case Is = "09"
            DataLater = Mid(data, 1, 2) & " " & "Set" & " " & Mid(data, 7, 4)
        Case Is = "10"
            DataLater = Mid(data, 1, 2) & " " & "Ott" & " " & Mid(data, 7, 4)
        Case Is = "11"
            DataLater = Mid(data, 1, 2) & " " & "Nov" & " " & Mid(data, 7, 4)
        Case Is = "12"
            DataLater = Mid(data, 1, 2) & " " & "Dic" & " " & Mid(data, 7, 4)
    End Select
    
    Dim StringaSQL As String
    StringaSQL = "select progressivo as Prog, date_format(data,'%d %m %Y') as Data, " _
    & " codicepcdare as Dare ,codicepcavere as Avere ,Descrizione , format(Importo,2) as Importo " _
    & " from primanota where data >= " & Chr(39) & DataLater & Chr(39)
    Adodc1.RecordSource = StringaSQL
    Adodc1.Refresh
    
    End Sub
    
    Cmq se vuoi il codice che ho scritto io lo puoi trasformare in una funzione,
    come preferisci!!!

    per il secondo punto prova ad usare FormatCurrency(Importo, , , vbFalse)
    questo non l'ho provato fammi sapere!!!
    Ultima modifica di dolcissimo; 11-12-2005 05:31 

  3. #3
    L'avatar di chico_
    chico_ non è in linea Topo di biblioteca Ultimo blog: Attacco a Oscommerce
    Post
    2,056
    Blogs
    4
    Like Inviati  
    0
    Like Ricevuti  
    0
    In primo luogo grazie per l'interessamento.

    Purtroppo il codice da te suggerito non funge, e credo per un semplice motivo: tu applichi la tua "trasformazione" della data a quella imposta come condizone, non a quella interna alla stringa Sql. Difatti anche applicando il tuo codice il risutato nella FlexGrid e' sempre "31 December 2005"

    Per quanto concerne FormatCurrency, nella sintassi SQL di MySql non e' prevista come espressione (salvo verifiche piu' approfondite), tanto e' vero che mi da un Syntax Error. Credo che anche qui valga il problema di cui sopra.

    Il tuo codice sarebbe ottimale per una gestione "esterna" all' SQL , ma in questo caso non e' gestibile (s.e.& o. )

    Grazie comunque

    Ciauz

    Chico
    ℹ️ Leggi di più su chico_ ...

  4. #4
    mgm
    mgm non è in linea Scolaretto
    Post
    87
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ho trovato quest'esempio per le date:
    mysql> select date_format(now(),"%d-%b-%Y");
    +-------------------------------+
    | date_format(now(),"%d-%b-%Y") |
    +-------------------------------+
    | 21-Apr-2004 |
    +-------------------------------+

    Funzionerà? Ciao

  5. #5
    L'avatar di chico_
    chico_ non è in linea Topo di biblioteca Ultimo blog: Attacco a Oscommerce
    Post
    2,056
    Blogs
    4
    Like Inviati  
    0
    Like Ricevuti  
    0
    Con Aprile funziona ---(Aprile-->April)
    Con Giugno siamo daccapo ----(Giugno-->June)

    Grazie comunque

    Chico
    ℹ️ Leggi di più su chico_ ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Formattazione dei numeri
    Da Maury63 nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 30-10-2016, 10:28
  2. [VB.Net] TextBox per formattazione numeri
    Da chico_ nel forum Progetti e Idee
    Risposte: 4
    Ultimo Post: 07-02-2008, 18:46
  3. formattazione numeri
    Da Kevin nel forum Visual Basic 6
    Risposte: 6
    Ultimo Post: 01-02-2008, 00:54
  4. Formattazione numeri
    Da cow_andrea nel forum PHP
    Risposte: 2
    Ultimo Post: 26-07-2007, 14:31
  5. [C/C++] Formattazione numeri
    Da igibila nel forum C/C++
    Risposte: 2
    Ultimo Post: 17-02-2005, 20:16