OpenBASE! o Banco de Dados Inteligente  Anterior  Sumário  Fale conosco!  Próximo

Itens com Valor Nulo

Propósito

Permitir que um ítem de dado armazene um valor desconhecido ou não informado.

Os tipos de itens de dados que aceitam valor nulo, são:

Sintaxe

<nome_item> [{[<rep>] / (<ligações>) / (<caminho>)/(0)}]...

... <tipo>:<tamanho>[,<num_decimais>] ... | |

... [(<num.nivel_ler>,<num_nivel_grav>)] ...

... [{POS <nome_item_rd>[+ <deslocamento>] /...

... VIRTUAL (<nome_item_part>, ..., <nome_item_part>)}] ...

... [NULO] [ATU = {C/S/R/}] [DEL = {C/R/S}][UNICA]

Argumentos

Nenhum

Utilização

Um item nulo, possui um byte a mais do que seu tamanho original, pois o primeiro byte indica se o item é nulo( byte binário é zero) ou não( byte binário é um).

Para se atribuir um valor nulo a um item do tipo U, A ou D( sem $date), utilize a constante cadeia NULLCHAIN que eqüivale a uma cadeia vazia(""). Para se atribuir um valor nulo a um ítem nulo do tipo numérico, utilize a constante numérica NULLNUMBER, que equivale ao número –999999999999999999.

Para se saber se o ítem lido é nulo ou não, basta compará-lo a NULLCHAIN se este item for do tipo U,A,D(sem $date) ,ou a NULLNUMBER caso este ítem seja numérico.

Um item virtual que possua algum componente nulo, também será nulo.

Ao se utilizar o geral, os valores nulos são exibidos como ????...?

Se for utilizada a máscara "????....?" um item nulo será exibido como ????..?

Exemplo

banco bdteste 1  

nome:arq1 e 

   cod1(0)  n5    

   nome     u21    nulo     

   salario  n10,2  nulo

   admiss   d3     nulo 

*  

**********************************

Carga do banco definido acima     

**********************************

prog

database  bdteste 1 a 2

select a

use arq1

locate  

for i = 1 to 10

  if (i%2) = 0

     replace    cod1     with i,; 

                nome     with "Teste" ,;

                salario  with  2000,;

                admiss   with  date()

                insert 

                if dberr() # 0

                   ? dbmens()

                endif

  else

     replace     cod1    with i,;

                 nome    with NULLCHAIN,;

                 salario with NULLNUMBER,;

                 admiss  with NULLCHAIN

     insert

     if dberr() # 0

      ? dbmens()

     endif

  endif

next  

return

*************************************************************************

Lê os dados carregados pelo programa acima

*************************************************************************

prog

database bdteste 1 a 2

use arq1

locate

Do While .not. eof()

 @01,02 say  cod1

 if nome = NULLCHAIN  

    @01,10 say  " Nome NULO"

 else

    @01,10 say nome

 endif

 if salario = NULLNUMBER

    @03,10 say " Salario NULO"

 else

    @03,10 say salario

 endif

 if admiss = NULLCHAIN

    @05,10 say " Data NULA"

 else

     @05,10 say admiss    

 endif

 wait

 continue

Enddo

OpenBASE! o Banco de Dados Inteligente Anterior Sumário Fale conosco! Próximo