Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    problema sulla query insert..

    In un form dove inserisco dei valori se metto nel campo "importo" un valore non decimale ad es. 111 nella pagina seguente da questo errore.
    codice:
    Tipo di errore:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][ODBC SQL Server Driver][SQL Server]Il numero di colonne dell'istruzione INSERT è minore del numero di valori specificati nella clausola VALUES. Il numero di valori della clausola deve corrispondere al numero di colonne specificate nell'istruzione.
    Viceversa se inserisco nel campo "importo" un valore decimale come 100 nessun problema.
    Nel db i campi sono numeric
    codice:
    if premio = "emissione" then
    provvigioni = (FormatNumber(importo, 2) * 10) /100 
    'response.Write(provvigioni)
    query = "INSERT INTO cassa ([ID_collaboratore],[N_polizza],[compagnia],[contraente],[data_effetto],[data_incasso],[importo],[tipologia_premio],[tipo_pagamento],[provvigioni],[tipo_veicolo],[targa])"
    query = query&"VALUES('"&ID&"','"&polizza&"','"&compagnia&"','"&ID_cliente&"','"&data_effetto&"','"&data_incasso&"',"&importo&",'"&premio&"','"&pagamento&"',"&provvigioni&",'"&veicolo&"','"&targa&"')"
    else
    provvigioni=0
    query = "INSERT INTO cassa ([ID_collaboratore],[N_polizza],[compagnia],[contraente],[data_effetto],[data_incasso],[importo],[tipologia_premio],[tipo_pagamento],[provvigioni],[tipo_veicolo],[targa])"
    query = query&"VALUES('"&ID&"','"&polizza&"','"&compagnia&"','"&ID_cliente&"','"&data_effetto&"','"&data_incasso&"',"&importo&",'"&premio&"','"&pagamento&"',"&provvigioni&",'"&veicolo&"','"&targa&"')"
    end if
    'richiamo la (query)
    Set ObjRs = ObjConn.execute(query)
    L'errore è sulla prima query probabilmente sul calcolo "provvigioni" qualcuno può gentilmente aiutarmi?

  2. #2
    accertati che il valore usi il punto come separatore decimale (es: 32.12) e non la virgole (cioe' 32,12) perche' la virgola viene interpretata da sql come separatore di campo. usa eventualmente l'istruzione replace

  3. #3
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Basta fare il replace nell'importo della virgola con il punto.
    La virgola fa credere all'SQL che si tratti di un altro campo. E poi i numeri in iglese hanno il punto e non la virgola per la rappresentazione decimale.

    Roby

  4. #4
    non ho mai fatto il replace come si usa?

  5. #5

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Al posto di

    "& importo &"

    codice:
    "& replace(importo, ",", ".") &"
    Roby

  7. #7
    Originariamente inviato da Roby_72
    Al posto di

    "& importo &"

    codice:
    "& replace(importo, ",", ".") &"
    Roby
    Ho messo così nella query ma da lo stesso errore di prima..

  8. #8
    fallo su tutti i numeri

  9. #9
    Se il decimale ha sempre 2 cifre e il db si rifiuta di accettare qualsiasi segno di punteggiatura puoi utilizzare la funzione Mid per eliminare la virgola e quindi salvare nel db 10,37 come 1037.
    Dopodiche, quando leggi il valore se il numero ha SEMPRE 2 cifre decimali, sempre utilizzando Mid rimetti la virgola partendo dal fondo e contando 2 cifre decimali.

    Ciao
    http://www.firesoftweb.it - Servizi gratuiti per il tuo sito web: forum, guestbook, contatori visite...

  10. #10
    grazie a tutti funziona! ero divenuto pazzo!
    Ho un altro piccolo problema.. come faccio a far mettere un campo nullo nel db?Altrimenti mi mette 0.
    Io avevo pensato una cosa del genere:
    codice:
    if data_incasso = "" then
       data_incasso = "Null"
    else
    end if

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.