Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Delphi] Interbase e campi null

    Ciao,
    questa mattina mi sono svegliato abbastanza incavolato perché é da due giorni che cerco di risolvere un bizzarro problema che mi fa star sveglio fino le 3 di notte.

    Premessa : ho aggiunto ad una tabella di un database un nuovo campo "bibò" definito come boolean( in dettaglio : CHAR(1), VALUE = 'T' OR VALUE = 'F', DEFAULT 'F').

    Il problema é il seguente:
    Quando eseguo l'inserimento di un nuovo record relativo alla tabella in questione mi appare un errore Validation error column "*** null ***" .


    1° tentativo
    Allora nell'evento OnNewRecord della tabella ho aggiunto una riga di codice che mi permette di definire un valore di default:
    codice:
    dataset.fieldByName('Bibò').value := 'F'
    Nonostante ciò compare lo stesso errore.


    2° tentativo
    Nella parte di codice che definisce il valore di ogni campo del nuovo record ho aggiunto ancora la riga :
    codice:
    dataset.fieldByName('Bibò').value := 'F'
    Nonostante ciò compare lo stesso errore.


    3° tentativo
    Per inserire una nuova tupla in una tabella uso la semplice sintassi:
    codice:
      Dataset.Insert;
      dataset.fieldByName('Bibò').value := 'F';
      dataset.fieldByName('...').value  := ...;
      dataset.fieldByName('...').value  := ...;
      dataset.fieldByName('...').value  := ...;
      Dataset.Post;
    e ho pensato ad uno strano ed insolito errore nel metodo Insert, ovvero nel fatto di isnerire uno per volta il valore di ogni campo.
    Ho sostituito il codice sopra con:
    Dataset.AppendRecord(['F', ..., ..., ..., ...)];

    Nonostante ciò compare lo stesso errore.

    4° tentativo
    A questo punto, esausto e inca....to, ho pensato di tagliare la testa al toro usando una query di inserimento.
    Quindi ho creato un nuovo componente e ho scritto codice SQL per l'inserimento di un nuovo record.
    Ma appare sempre lo stesso errore:
    Validation error column "*** null ***"

    Non é la prima volta che mi capita un errore del genere e ho sempre risolto il tutto usando il primo tentativo.

    Aiutatemi perché non ce la faccio proprio più!


  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Una domanda "a bruciapelo": non è che hai per caso trigger oppure stored procedure collegati all'inserimento di un record in tale tabella?

    Se hai provato ad inserire un record manualmente (senza usare Delphi, ma bensì attraverso un tool SQL) e ottieni quell'errore, forse hai del codice che viene eseguito a fronte dell'inserimento e che riceve una colonna null ove si aspetta invece di ricevere un dato significativo per calcolare risultati o effettuare altre operazioni...

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Si, ho un trigger per incrementare il contatore della chiave primaria.
    Inoltre ho un procedura, che in fase di inserimento resetta un valore in campo...

    Usando i breakpoint, noto che prima della chiamata al metodo Post il campo Bibò assume il valore che ho precedentemente definito, supponiamo 'F'.



    P.s: Tutto bene al DelphiDay?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da AlbertoPicca
    Si, ho un trigger per incrementare il contatore della chiave primaria.
    Inoltre ho un procedura, che in fase di inserimento resetta un valore in campo...
    Prova a disabilitare il trigger e la stored procedure (inserendo alla meno peggio un commento o una suspend) affinchè il codice venga bypassato e controllare se l'errore si verifica di nuovo...

    Originariamente inviato da AlbertoPicca
    Usando i breakpoint, noto che prima della chiamata al metodo Post il campo Bibò assume il valore che ho precedentemente definito, supponiamo 'F'.
    Sospetto che l'errore possa essere dovuto ad un altro campo e non necessariamente a quello incriminato...o almeno occorre essere sicuri...

    Originariamente inviato da AlbertoPicca
    P.s: Tutto bene al DelphiDay?
    Tutto benissimo! Molto utile per chiarimento delle posizioni di Borland e per imparare qualcosa di nuovo dal lato tecnico che mi sto accingendo a sperimentare...
    Ad ogni modo, sto preparando un "reportage completo" nel limite delle mie possibilità (ho preso 10 pagine di appunti, ma ovviamente non ho potuto annotare qualsiasi cosa).
    Ti manderò un messaggio privato quando sarà pronto...il tutto coinciderà con l'apertura della versione aggiornata del sito aziendale ABLS.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    In effetti, provando ad inserire il record usando l'IBConsole compare lo stesso errore!
    Ora provo con l'inibizione del trigger.

    Bene, aspetterò il file in questione. Grazie!
    In effetti ho visto che il vostro sito é congelato , sono curioso di vedere la versione "aziendale"!


  6. #6
    Ottimo.
    Si tratta di un trigger che andava ad inibire il valore del campo.

    Grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.