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

    problema con cint() su campo testuale (solo su server remoto)

    Ciao,
    spero di non offendere la comunità di html.it (che così spesso mi ha fornito le risposte che cercavo) con quello che può sembrare un 'cross-posting'... in realtà credevo questo messaggio più inerente alla sezione 'Microsoft Server' del forum ma, non avendoci trovato risposta, credo che sia giunto il momento di destare l'attenzione di programmatori ASP che, probabilmente, avranno già incontrato casini simili uploadando i loro siti su server remoti.

    Dunque, uploadando un sito in ASP che ho sviluppato per un cliente sul suo server (Win2003server) mi sono accorto che funzionava diversamente da come funziona in locale e sul mio web-server di prova.

    Durante una SELECT:
    codice:
    strSql = "SELECT *"
    strSql = strSql & " FROM tabella, altraTabella"
    strSql = strSql & " WHERE campo=valore"
    strSql = strSql & " AND altroCampo=TRUE "
    strSql = strSql & " ORDER BY cint(campoTestuale)"
    ...come dicevo sui miei server non ha problemi e ordina numericamente quei record secondo quel campo che, anche se di tipo testo, contiene solo numeri (in realtà sono dei prezzi formattati tipo: 1375,55 ...cioè senza il punto delle migliaia ma con la virgola dei decimali).

    Sul server del cliente, invece, ignora completamente la conversione da stringa a numero e persevera nell'ordinare alfabeticamente i risultati (pur non generando errori) .

    Ho provato ad arrampicarmi sugli specchi usando anche questi disperati tentativi di casting, pensando che il cint() avesse problemi su quel server:
    codice:
    ORDER BY round(campoTestuale,2)
    ---- oppure ----
    ORDER BY (campoTestuale/1)
    ---- e anche ----
    ORDER BY  IIf(IsNumeric(campoTestuale),0,campoTestuale),Val(campoTestuale)
    ma come se ne deduce dal fatto che scrivo questo messaggio... non funzionano.. e, pur non generando errori, non ordinano in maniera corretta.

    Ho iniziato a pensare che il nuovo webserver del cliente abbia qualche problema con quel tipo di conversione... vi pare possibile? Vi è già capitato?
    E' un server vergine appena installato, ho dovuto settargli alcuni parametri di timeout e l'aspMaxEntityAllowed nel metabase per l'upload ma non saprei cosa settare di inerente al mio problema.

    Sapete mica se c'è qualcosa da settare nell'ISS o nel sistema stesso? può essere un problema di bios? qualche casino con le operazioni in virgola mobile, forse? il resto del sito, dove non si fa uso di cint(), funziona benissimo anche su query molto più avanzate

    Il sito si appoggia su un database Access in attesa di essere migrato in SQL al momento della pubblicazione (per il momento è in Access per una particolare esigenza di poterlo downloadare, modificare e riuploadare sul server remoto in fase di sviluppo)

    Aiutate sto frescon... a trovar la soluzion!
    Spectumino

  2. #2
    CINT converte in interi, max 32.000 - concettualmente è già sbagliato volerci convertire (come dal tuo esempio) "1375,55"....


    che db usi?

  3. #3
    Grazie 1000 per la risposta... fra l'altro so che sei uno che ne mastica di ste cose


    mi quoto:
    Originariamente inviato da Spectrumino
    Il sito si appoggia su un database Access in attesa di essere migrato in SQL al momento della pubblicazione (per il momento è in Access per una particolare esigenza di poterlo downloadare, modificare e riuploadare sul server remoto in fase di sviluppo)
    Ho cercato una prima applicazione del tuo consiglio... e alla fine ho appena provato ad usare un Clng() ma senza che cambiasse nulla
    Il round(campo,2) doveva andare bene a quel punto, no?

    Soprattutto... perchè solo sul server di chi mi paga? :rollo:

  4. #4
    anche clng è fatto per gli interi... usa CSNG o CDBL o CCUR

    se anche con questi non va, fammi qualche esempio di mal ordinamento

  5. #5
    allora...
    ...prima di tutto sono perfettamente d'accordo sul fatto che sbagliavo concettualmente.. e di brutto

    Ad ogni modo ho provato tutte le funzioni che mi hai consigliato... te lo giuro... assurdo ma tutte senza distinzione (compreso il mio stupido cint) mi restituiscono questa lista:

    che non capisco neppure in che ordine sia ..visto che il primo della lista dovrebbe essere il più economico mentre l'ultimo sarebbe il più costoso dei sette

    mentre in locale o sul mio web-server di prova ottengo questo risultato:

    che, anche se a questo punto si è capito che è un risultato fasullo, perlomeno ha un'ordine più logico.


    ti ho mandato un PM con il link temporaneo... perchè con quell'effetto di rollover sui link è un po un casino vedere i prezzi.
    Il sito che vedrai, in questo momento, ha un semplice ORDERBY campo_testuale... tutta via anche in questo caso (che dovrebbe essere alfabetico) non mi torna che 1,95 (l'ultimo MOUSE della lista) venga prima di 1.375,15 (il primo FLYBOOK)

    Che ne pensi?

  6. #6
    prova e -se puoi - posta il risultato per

    1. SELECT campo_prezzo, CCUR(campo_prezzo) FROM tabella
    2. SELECT campo_prezzo, CCUR(campo_prezzo) FROM tabella ORDER BY 1
    3. SELECT campo_prezzo, CCUR(campo_prezzo) FROM tabella ORDER BY 2

  7. #7
    no problem per il PM

    ...devo staccare... oggi pomeriggio provo e posto! (da casa non posso)

    per adesso, grazie!!!!!!!!!

  8. #8
    il risultato di:
    codice:
    SELECT campo_prezzo, CCUR(campo_prezzo) FROM tabella
    è:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

    [Microsoft][ODBC SQL Server Driver][SQL Server]'CCur' non è riconosciuto come nome di funzione.

    /tempTest.asp, line 287
    sembrerebbe che non lo accetti in una query
    dove la linea 287 è la solita chiamata ad Execute

    Mi rituffo nelle prove, dimmi se ti viene in mente qualcosa... ri-grazie!

  9. #9

  10. #10
    allora.. in quella query mi dava l'errore... e allora sono tornato a inserire le funzioni nella query effettiva del sito... stranamente in questo modo non ne da

    risultati di ORDER BY campo_prezzo:
    codice:
    0,59
    0,66
    0,74
    0,88
    0,90
    1,06
    1,12
    1,70
    1,87
    1,95
    (sembra giusto ma è alfabetico)
    risultati di ORDER BY CCur(campo_prezzo):
    codice:
    1.371,15
    1.371,15
    1.371,15
    1.371,15
    1.371,15
    1.371,15
    0,59
    0,66
    0,74
    0,88
    i risultati di cdbl e di csng sono identici a quelli di ccur

    :master: inizio a sentire il bisogno di una vacanza :rollo:

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.