Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188

    [VB6 Sp6] Problema: valore 0 con OLEDB su campo decimale.

    Salve a tutti. Ho un problema, che non riesco a risolvere. Taglio corto: non riesco a valorizzare a 0 un campo decimale di un DB Access (97/2003), con uso di OLEDB 4.0. Ho provato con un valore intero ed uno decimale a caso e funge [rettifica: funge se >=1: es, 0.01 o 0.99 non è accettato]. Dove mi sono perso ? Se uso DAO non ho problemi. Il campo non ha nessun tipo di blocco: decimale, precisione 18, scala 2, pos.decimali sia 0, che 2 che automatico, richiesto no, indicizzato no. C'è una soluzione che non mi obblighi a cambiare il formato di tutti i campi decimali ? Grazie e... auguri a tutti.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non si è capito molto ... quale codice usi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    VB6. ho cambiato il collegamento al DB utilizzando gli adodb 'Microsoft.Jet.OLEDB.4.0'. Semplicemente, quando scrivo un nuovo record [addnew] mi da l'errore 'tipo di dati non corrispondente...' se ad un campo decimale cerco di dare valore inferiore ad 1. Se lo lascio null o valore superiore 1 oppure 1,99 etc. etc., l' UPDATE funziona regolarmente. Spero di essermi spiegato, non sono un gran chè in italiano e capisco che il problema è strano e non riesco a presentarvelo in maniera chiara.

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da benjy
    VB6.
    Questo NON E' il codice, come ti ha chiesto Oregon, ma il linguaggio.
    Comunque è bastato leggere [addnew] e si è capito tutto...
    Sperando almeno che tu non usi ADODC!

    Originariamente inviato da benjy
    ho cambiato il collegamento al DB utilizzando gli adodb 'Microsoft.Jet.OLEDB.4.0'. Semplicemente, quando scrivo un nuovo record [addnew]
    Perchè continuare con i soliti, vecchi metodi che danno i soliti, vecchi problemi?

    Con ADO si hanno a disposizione Command e relativi Parameters e fine dei problemi.
    Tieni presente che con il .NET si usano esclusivamente Command+Parameters, quindi prima impari ad usarli e meglio sarà per te, perchè ora stai solo perdendo il tuo tempo per risolvere problemi relativi a metodi che sono già stati abbandonati da molto tempo.

    Guarda questo articolo (+ progetto VB6) che mostra come fare e tratta oltretutto i problemi 'spinosi' delle date:

    ADO, Parametri ed affini
    http://nuke.vbcorner.net/Articoli/VB...5/Default.aspx

    Notare il modulo modADO che contiene una serie di utilissime funzioni tra cui la SetADOParameter che ho creato per la generazione automatica dei parametri.



  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    chiedo venia , ma dal punto di vista teorico sono una S . Penso di cavermela molto di più sul campo. Per cui:
    1° - Avete ragione, non avevo spiegato che avevo il problema in fase di registrazione record
    2° - Quali sarebbero i 'vecchi metodi' che sto usando. Secondo Voi [Gibra], non sto usando gli ADO? o meglio, ADO e ADODB, non sono la stessa cosa?
    3° - mi devo appoggiare ad un DB access esistente, (sto valutando di trasportare in SQL , la valutazione riguarda vantaggi e svantaggi, anche dal punto di vista protezione da accessi altrui)
    4° - nell'esempio che si vede (sul sito indicato),[non ho ancora scaricato il progetto] non vedo la risposta al mio problema, ovvero perchè non mi accetta la memorizzazione di valore sotto a 1. Qui si parla di assegnazione dei valori, quindi, se non ho capito male siamo a monte, alla creazione.
    5° - Vorrei passare al NET, ma momentaneamente non posso per motivi... personali-logistici.

    Spero non me ne vogliate per questa mia apatia ai termini tecnici :master: , (che mi porta spesso a fare la figura del gelataio

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da benjy
    chiedo venia , ma dal punto di vista teorico sono una S . Penso di cavermela molto di più sul campo. Per cui:
    Davvero strano come concetto che, ovviamente, mi trova in completo disaccordo .
    Senza la Teoria: la Pratica diventa solo sperimentazione fine a sé stessa, non ha alcun senso.
    Secondo la TUA teoria, allora chi vuole imparare a costruire case quante ne dovrà far crollare prima di aver imparato?
    La sola differenza con le case è che i programmi non crollano, però non funzionano.

    Da che mondo è mondo PRIMA si studia la Teoria, DOPO la si applica in Pratica, ed è questo che consente di imparare.

    Originariamente inviato da benjy
    1° - Avete ragione, non avevo spiegato che avevo il problema in fase di registrazione record
    Sì, però il codice non l'hai ancora mostrato.

    Originariamente inviato da benjy
    2° - Quali sarebbero i 'vecchi metodi' che sto usando. Secondo Voi [Gibra], non sto usando gli ADO? o meglio, ADO e ADODB, non sono la stessa cosa?
    Ecco, vedi cosa significa non conoscere la Teoria?
    Non ti rendi nemmeno conto di cosa parli: non sai distinguere i Metodi dagli Oggetti.

    Originariamente inviato da benjy
    3° - mi devo appoggiare ad un DB access esistente, (sto valutando di trasportare in SQL , la valutazione riguarda vantaggi e svantaggi, anche dal punto di vista protezione da accessi altrui)
    Usando solo la Pratica? Auguri...

    Originariamente inviato da benjy
    4° - nell'esempio che si vede (sul sito indicato),[non ho ancora scaricato il progetto] non vedo la risposta al mio problema, ovvero perchè non mi accetta la memorizzazione di valore sotto a 1. Qui si parla di assegnazione dei valori, quindi, se non ho capito male siamo a monte, alla creazione.
    Quindi tu, dando una rapida occhiata, hai già capito tutto...
    Sono davvero sbalordito!

    Originariamente inviato da benjy
    5° - Vorrei passare al NET, ma momentaneamente non posso per motivi... personali-logistici.
    Quindi avevo visto giusto quando ti ho detto che stai perdendo il tuo tempo in tecnologie sorpassate, non più utilizzabili con il .NET.


    Originariamente inviato da benjy
    Spero non me ne vogliate per questa mia apatia ai termini tecnici :master: , (che mi porta spesso a fare la figura del gelataio
    Beh, se voi fare il gelataio, buon per te.


  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Grazie. Molto gentile. Innanzi tutto ho avuto l'umiltà di premettere che in italiano non mi so esprimere molto bene. Infatti non mi sembra di aver detto che non leggo la teoria, volevo solo far capire che non mi diverto molto a stare attaccato ai libri. Calcolando che ho studiato programmazione su un IBM S1 (COBOL E FORTRAN), Tektronik, all'epoca, si facevano i programmi per 2 mesi in classe ed in 3 giorni di CED dovevi inserirlo a pc e farlo funzioanare, non penso Si possa permettere di trattarmi in questo modo, visto e considerato che, la TEORIA per cui non mi accetta il valore 0 ancora non me la esplicate. Il codice non l'ho postato in quanto ho già spiegato che assegno un valore ad un campo e sull'istruzione UPDATE mi dà l'errore. Se non assegno tale valore e salto il campo, l'UPDATE va a buon fine. Un esperto di teoria non se lo doveva far ripetere, avrebbe dovuto leggerlo nei post precedenti. Cmq, grazie lo stesso. (Devo aver sbattuto contro il figlio di Bill)

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da benjy
    ... in italiano non mi so esprimere molto bene. Infatti non mi sembra di aver detto che non leggo la teoria ...
    Scusa, ma cosa c'entra l' "italiano" con la "teoria informatica" ?

    volevo solo far capire che non mi diverto molto a stare attaccato ai libri.
    Si è capito. E ti si è risposto che non è una cosa buona, anzi, molto cattiva ...

    non penso Si possa permettere di trattarmi in questo modo
    In quale modo? Mi sembra che siano state dette delle cose corrette e pacate. Ovvero, senza la teoria, la pratica non basta, anzi, la maggior parte delle volte è deleteria.

    visto e considerato che, la TEORIA per cui non mi accetta il valore 0 ancora non me la esplicate. Il codice non l'ho postato in quanto ho già spiegato che assegno un valore ad un campo e sull'istruzione UPDATE mi dà l'errore.
    Allora ... leggi con attenzione ... devi postare il codice, quello che hai usato, e indicare in dettaglio l'errore ottenuto ... ... altrimenti non si va da nessuna parte ...

    Un esperto di teoria non se lo doveva far ripetere, avrebbe dovuto leggerlo nei post precedenti.
    Inutile ironia che non ti aiuta e che non porta da nessuna parte.

    Devi postare il codice ...

    Cmq, grazie lo stesso. (Devo aver sbattuto contro il figlio di Bill)
    Ma che dici?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    188
    Verissimo che bisogna studiare + teoria, cmq, ho sentito un pò di straffotenza, il paragone con le case che crollano è uscito male, per uno che fra qualche ora accende la candelina per quella terribile notte (3.32) con la conseguente fuga da casa con famiglia appresso... cmq, lasciamo stare.

    Ora vi posto il codice, tanto non 'serve' a molto.

    Set recordset1= New ADODB.Recordset
    recordset1.Open Trim("tabella"), archivio, adOpenKeyset, adLockOptimistic

    recordset1.addnew
    recordset1!campodecimale=1
    recordset1.update

    così nessun problema

    Set recordset1= New ADODB.Recordset
    recordset1.Open Trim("tabella"), archivio, adOpenKeyset, adLockOptimistic

    recordset1.addnew
    recordset1!campodecimale=valore ' valore inferiore ad 1
    recordset1.update
    errore: tipo di dati non corrispondenti nell'espressione criterio

    Questo è il codice. Ripeto con valore superiore ad uno funge, inferiore ad 1 no. Siccome ho parecchi campi che sono stati definiti decimali, e il DB non è mio, non so se posso modificare tutti i campi da decimali a double o similari. Anche perchè con i vecchi metodi DAO non avevo questo problema e, se di default setto il valore 0 lo prende. Ma anche in questo caso sarebbe un rivedere tutti i campi in un db non mio.

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da benjy
    Verissimo che bisogna studiare + teoria, cmq, ho sentito un pò di straffotenza, il paragone con le case che crollano è uscito male, per uno che fra qualche ora accende la candelina per quella terribile notte (3.32) con la conseguente fuga da casa con famiglia appresso... cmq, lasciamo stare.
    Nessuno poteva saperlo, quindi non è che te la puoi prendere per questo...

    Originariamente inviato da benjy
    Ora vi posto il codice, tanto non 'serve' a molto.
    Ti anticipi troppi problemi su ciò che serve e non. Il mio suggerimento è quello di cercare di prendere i consigli dati per il "verso giusto", cioè di non considerarli maltrattamenti gratuiti a novizi, ma buone indicazioni per accrescere le proprie capacità, acquisire esperienza e lavorare meglio.

    Invito comunque chi risponde a non dare per scontato la comprensione del proprio tono ironico o sarcastico, se così è, perché dal testo non traspare sempre e siccome non ci si conosce di persona, a volte è difficile capirlo, soprattutto da parte di chi si trova a dover affrontare e risolvere i problemi.

    Saluti a tutti!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.