Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Type Mismatch

  1. #1

    Type Mismatch

    Salve a tutti di nuovo..
    Questa volta ho peroblemi per una variabile:
    "voto_news"... la prendo dal database calcolandola così:
    codice:
    If rs.fields("voto_votanti")=0 Then
     voto_news=0
    Else
     voto_news=(rs.fields("voto")/rs.fields("voto_votanti"))
    End If
    Siccome vorrei trovare un intero che sia approssimato correttamente adopero questo
    codice:
     
    If Mid(CStr(voto_news),3,1)<5 or Len(Mid(CStr(voto_news),3,1))<1 Then
      voto_news=Int(voto_news)
     Else
      voto_news=Int(voto_news)+1
     End If
    Ma ecco che mi da l'errore "Type mismatch: '[string: ""]'" riferendosi alla stringa del primo If di quest'ultimo codice.
    Cerco di convertirla in stringa per prendere il terzo valore, dopo il primo (il risultato della divisione è sempre un numero compreso tra 1 e 6), ed il segno di virgola.
    La variabile è presente.
    Quel "Len(Mid(CStr(voto_news),3,1))<1" è per cautelarmi nel caso di una divisione perfetta, ma non è questo che da problemi.

    Che fare ?
    Vedete qualcosa che io non vedo? :master:
    Buona domenica...

    Riky

  2. #2
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    ma... l'errore indicato sembra tipico di campi non corrispondenti tra quelli che chiampi nello script e quelli esistenti nel dbase.

  3. #3
    Premetto che non sono d'accordo sul compiere evoluzioni e capriole per eseguire operazioni matematiche sulle stringhe, o parti di esse, quando basterebbe formattare correttamente i campi del database (come numerici, visto che sono numeri e che devi compiere delle operazioni matematiche su di essi) e risolveresti tutto con una semplice istruzione matematica, tipo rnd(numero).

    Detto questo, il tuo codice non funziona solo quando la divisione da' un risultato intero, perchè in questo caso

    Mid(CStr(voto_news),3,1)
    è una stringa vuota e non puoi confrontarla con alcun valore

    Risolvi trasformando
    voto_news=(rs.fields("voto")/rs.fields("voto_votanti"))
    in
    voto_news=formatnumber((rs.fields("voto")/rs.fields("voto_votanti")), 1)
    In questo modo conservi sempre una cifra decimale anche quando il risultato della divisione è intero, e anche allora
    Mid(CStr(voto_news),3,1)
    vale "0" e non è vuota.

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  4. #4
    Grazie,
    anzitutto avevo pensato di fare quella divisione per calcolarmi ogni volta il voto medio, piuttosto che memorizzarlo in un altro campo del db. Ma forse voi mi consigliate di memorizzarlo? Non sono molto esperto di performing..

    Ho acmbiato il codice come mi suggerivi, ma il risultato, è che la variabile ora assume un valore logico: "False", il che non va bene
    Sto effttuando i test alla pagina www.molecularlab.it/news/view.asp?n=1
    Suggerimenti?

    Grazie

  5. #5
    Non ho capito: quale variabile?

    La piccola parte di codice che hai postato all'inizio, con la modifica suggerita, funziona e non da' più l'errore che dava prima.

    Anche se fossi in grado di farlo, invece, non posso consigliarti sulla parte di codice che non conosco....

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  6. #6
    La divisione va benissimo fatta al volo, non serve memorizzare un risultato che vale solo durante la sessione corrente.....visto che al voto successivo la media sarà già diversa.
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  7. #7
    Problemi risolti
    Un piccolo errore di distrazione :rollo: , nell'apportare la modifica consigliata mi creava probemi, ma ora tutto ok! [A parte un po' di lentezza del server..maledetta Aruba]
    Grazie

    Riky

  8. #8
    Ok, mi fa piacere.

    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  9. #9
    PS: la condizione

    or Len(Mid(CStr(voto_news),3,1))<1
    (che peraltro non ha mai agito) puoi anche toglierla: infatti la lunghezza di una sottostringa lunga un carattere sarà sempre = 1, tranne quando la stringa è lunga meno di tre caratteri (cosa che ora, con la modifica, non succede). In quel caso era il controllo
    If Mid(CStr(voto_news),3,1)<5
    che dava errore, e l'altro comunque non interveniva.
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  10. #10
    Ok
    ho anche corretto in
    codice:
    	If rs.fields("voto_votanti")=0 Then
    	 voto_news=formatnumber(0.0, 1)
    [..]
    Dovrebbe essere tutto a posto..
    Grazie ancora

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.