Guia de referência de comandos e funções

COMANDO / FUNÇÃO DESCRIÇÃO / FINALIDADE

&

Executa substituição de macro.

Sintaxe

& NomeVar[.cExpressão]

Argumentos

& NomeVar     Especifica o nome da variável ou do elemento de matriz ao qual será feita referência na substituição de macro. Não inclua  o  prefixo  M.  que  diferencia  variáveis  de  campos.  Essa inclusão provocará um erro de sintaxe. A macro não deve exceder o tamanho máximo de instrução permitido no Visual FoxPro.

Uma  variável  não  pode  fazer  referência  a  si  mesma  de  forma recursiva durante a substituição de macro. Por exemplo, o comando a seguir gerará uma mensagem de erro:

STORE ‘&gcX’ TO gcX

? &gcX

As  instruções  de  substituição  de  macro  que  aparecem  em  DO WHILE, FOR e SCAN são avaliadas somente no início do loop, não sendo  reavaliadas  em  iterações  subseqüentes.  Qualquer  alteração feita na variável ou no elemento de matriz que ocorra dentro do loop não será reconhecida.

cExpressão    O delimitador de ponto opcional (.) e .cExpressão são utilizados para incluir caracteres adicionais em uma macro. cExpressão incluída na macro com .

cExpressão  também pode  ser  uma  macro.  Se  cExpressão  for  um nome de propriedade, inclua um ponto extra (cExpressão..NomePropriedade).

Comentários

A substituição de macro trata o conteúdo de uma variável ou de um elemento de matriz como um literal de seqüência de caracteres. Quando um “E” comercial (&) preceder uma variável do tipo Caractere ou um elemento de matriz, o conteúdo da variável ou do elemento substituirá a referência à macro. É possível utilizar a substituição de macro em qualquer comando ou função que aceite um literal de seqüência de caracteres.

Dica:   Sempre que possível, utilize uma expressão de nome em vez de uma substituição de macro. Uma expressão de nome opera como a substituição de macro. No entanto, uma expressão de nome limita-se a   passar   seqüências   de   caracteres   como   nomes.   Utilize   uma expressão de nome para acelerar de forma significativa o processamento caso um comando ou função aceite um nome (um nome de arquivo, nome de janela, nome de menu e assim por diante).

Embora os comandos abaixo sejam aceitáveis: STORE ‘cliente’ TO gcTableName

STORE ‘empresa’  TO gcTagName

USE &gcTableName ORDER &gcTagName substitua-os por uma expressão de nome: USE (gcTableName) ORDER (gcTagName)

A substituição de macro é útil para a substituição de uma palavra- chave em um comando. No exemplo a seguir, a definição TALK é salva em uma variável para que a variável possa ser posteriormente restaurada no programa. A definição original TALK é restaurada com a substituição de macro.

 

AERROR()

Cria uma matriz de variável que contém informações sobre o erro mais recente do ODBC, OLE ou Visual FoxPro.

Sintaxe AERROR(NomeMatriz) Tipos de retorno Numérico

Argumentos

NomeMatriz  Especifica o nome da matriz criada por AERROR( ).

Comentários

A função AERROR( ) cria uma matriz com seis colunas e retorna o número de linhas da matriz.

A tabela a seguir descreve o conteúdo de cada elemento quando ocorre um erro do Visual FoxPro. Na ocorrência de um erro, a matriz conterá uma linha.

Número do elemento      Descrição

1   Numérico.  Contém  o  número  do  erro.

Idêntico     ao     valor     retornado     por

ERROR( ).

2   Caractere. O texto da mensagem de erro.

Idêntico     ao     valor     retornado     por

MESSAGE( ).

3   O  valor  nulo.  No  entanto,  se  o  erro possuir um parâmetro de erro adicional, irá conter o texto do parâmetro de erro. Idêntico      ao     valor     retornado     por SYS(2018).

4   O   valor   nulo.   No   entanto,   quando apropriado, contém o número da área de trabalho em que o erro ocorreu.

5   O   valor   nulo.   No   entanto,   se   um disparador falhar (erro 1539), irá conter um dos valores numéricos abaixo:   1 – Erro  no  Disparador  de  inserção.   2  – Erro no Disparador de atualização.   3 – Erro no Disparador de exclusão.

6   O valor nulo.

7   O valor nulo.

A tabela a seguir descreve o conteúdo de cada elemento quando ocorrem os erros de OLE número 1427 ou 1429. Nestes casos, a matriz contém uma linha.

Número do elemento      Descrição

1    Numérico. Contém 1427 ou 1429.

2   Caractere. O texto da mensagem de erro do Visual FoxPro.

3    Caractere. O texto da mensagem de erro

de OLÉ.

4    Caractere.    O    nome    do    aplicativo

(Microsoft Excel, por exemplo).

5    O  valor  nulo  ou  Caractere.  Contém  o nome do arquivo de Ajuda do aplicativo em que podem ser encontradas maiores informações sobre o erro, se as informações estiverem disponíveis no aplicativo;   caso   contrário,   contém   o valor nulo.

6   O  valor  nulo  ou  Caractere.  Contém  o identificador de contexto da Ajuda para o tópico apropriado, se as informações estiverem disponíveis no aplicativo; caso contrário, contém o valor nulo.

7     Numérico. Um número de exceção OLE 2.0.

A tabela a seguir descreve o conteúdo de cada elemento quando ocorre um erro do ODBC de número 1526. Neste caso, a matriz contém duas ou mais linhas; uma linha para cada erro do ODBC.

Número do elemento      Descrição

1     Numérico. Contém 1526.

2     Caractere. O texto da mensagem de erro.

3     Caractere. O texto da mensagem de erro do ODBC.

4     Caractere.  O  estado  atual  do  ODBC SQL.

5     Numérico. O número do erro da fonte de dados do ODBC.

6      Numérico.  O  identificador  de  conexão do ODBC.

7        O valor nulo.

ALLTRIM()

Remove os espaços em branco do início e do final da expressão de caracteres especificada e retorna a expressão com os espaços removidos como uma seqüência de caracteres.

Sintaxe ALLTRIM(cExpressão) Tipos de retorno Caractere

Argumentos

cExpressão      Especifica  a  expressão  de  caracteres  da  qual  serão retirados os espaços em branco iniciais e finais.

Comentários

ALLTRIM( ) pode ser utilizado para assegurar que os espaços em branco serão removidos dos dados inseridos pelo usuário.

APPEND BLANK

Adiciona um ou mais registros novos ao fim de uma tabela.

Sintaxe

APPEND [BLANK]

[IN nÁreaTrabalho | cAliasTabela] [NOMENU]

Argumentos

BLANK   Adiciona um registro em branco ao fim da tabela atual. O Visual FoxPro não abre uma janela de edição quando você emite APPEND BLANK.

Você  pode  editar  o  novo  registro  com  BROWSE,  CHANGE  ou EDIT.

IN nÁreaTrabalho    Especifica a área de trabalho da tabela na qual um novo registro será incluído.

IN cAliasTabela     Especifica o alias da tabela na qual um novo registro será incluído.

Se você omitir nÁreaTrabalho e cAliasTabela, um novo registro será incluído na tabela na área de trabalho selecionada no momento. Se você  emitir  APPEND,  um  registro  em  branco  será  adicionado  à tabela especificada com nÁreaTrabalho ou cAliasTabela e a tabela será   automaticamente   selecionada.   Se   você   emitir   APPEND BLANK,   um   registro   em   branco   será   adicionado   à   tabela especificada com nÁreaTrabalho ou cAliasTabela e a tabela não será selecionada.

NOMENU    Especifica que o título do menu Tabela será removido da barra de menus do sistema, evitando alterações no formato da janela de edição.

Comentários

Quando você emite APPEND ou APPEND BLANK e uma tabela não está aberta na área de trabalho selecionada no momento, a caixa de diálogo Abrir é exibida, de forma que você possa escolher uma tabela na qual inclua registros.

APPEND abre uma janela de edição para que você possa fornecer dados a um ou mais novos registros. Quando você adiciona um novo registro, o Visual FoxPro atualiza todos os índices abertos.

BOF()

Determina se o ponteiro do registro está posicionado no início de uma tabela.

Sintaxe

BOF([nÁreaTrabalho | cAliasTabela])

Tipos de retorno Lógico Argumentos

nÁreaTrabalho   Especifica o número da Área de trabalho para uma tabela aberta em uma outra Área de trabalho.

cAliasTabela   Especifica o alias de uma tabela aberta em uma outra Área de trabalho.

Caso a tabela em que você deseja testar a condição de início do arquivo esteja aberta em uma Área de trabalho diferente da selecionada no momento, utilize estes argumentos opcionais para especificar o número da Área de trabalho ou o alias da tabela. Caso a tabela não esteja aberta na Área de trabalho especificada, BOF( ) retornará falso (.F.).

Comentários

Utilize BOF( ) para testar uma condição de início do arquivo para uma tabela. BOF( ) retornará verdadeiro (.T.) se você tiver tentado mover o ponteiro do registro para uma posição anterior ao primeiro registro da tabela.

CANCEL

Finaliza a execução do arquivo de programa atual do Visual FoxPro.

Sintaxe CANCEL Comentários

O controle retornará à janela Comando quando o Visual FoxPro estiver sendo utilizado de forma interativa. Se um aplicativo distribuído   em   tempo   de   execução   estiver   sendo   executado, CANCEL terminará o aplicativo e o controle retorna ao Windows. Se um programa estiver sendo executado no Visual FoxPro na hora da criação, CANCEL terminará o programa e o controle retorna à janela Comando.

A execução de CANCEL libera todas as variáveis privadas.

CLEAR EVENTS

Interrompe o processamento de eventos iniciado com READ EVENTS. Quando CLEAR EVENTS for executado, a execução do programa  continuará  na  linha  do  programa  imediatamente  após READ EVENTS.

DELETE

Marca registros para exclusão.

Sintaxe

DELETE

[Escopo] [FOR lExpressão1] [WHILE lExpressão2] [IN nÁreaTrabalho | cAliasTabela]

[NOOPTIMIZE]

Argumentos

Escopo   Especifica um intervalo de registros a serem marcados para exclusão. As cláusulas de escopo são: ALL, NEXT nRegistros, RECORD nNúmeroRegistro e REST.

Para  obter  maiores  informações  sobre  as  cláusulas  de  escopo, consulte o tópico Cláusulas de escopo.

O escopo padrão para DELETE é o registro atual (NEXT 1).

FOR lExpressão1   Especifica uma condição através da qual somente os registros que satisfazem à condição lógica lExpressão1 são marcados para exclusão.

Rushmore otimizará uma consulta especificada com

DELETE … FOR se lExpressão1 for uma expressão otimizável e a tabela  for  indexada  em  DELETED( ).  Para  obter  um  melhor desempenho, utilize uma expressão otimizável na cláusula FOR.

Para obter informações sobre expressões otimizáveis Rushmore, consulte  SET  OPTIMIZEe  “Compreendendo  a  tecnologia Rushmore”, no capítulo 15, “Otimizando aplicativos”, no Guia do Desenvolvedor.

WHILE lExpressão2    Especifica uma condição através da qual os registros serão marcados para serem excluídos quando lExpressão2 resultar em verdadeiro (.T.).

IN nÁreaTrabalho   Especifica a Área de trabalho da tabela onde os registros são marcados para exclusão.

IN cAliasTabela    Especifica o alias da tabela onde os registros são marcados para exclusão.

Se você omitir nÁreaTrabalho e cAliasTabela, os registros serão marcados para exclusão na tabela da Área de trabalho atualmente selecionada.

NOOPTIMIZE   Desativa a otimização de Rushmore de DELETE.

Comentários

Os registros marcados para exclusão não são removidos fisicamente da tabela até que PACK seja emitido. Os registros marcados para exclusão podem ser reintegrados (desmarcados) com RECALL.

      DO CASE

… CASE … ENDCASE

Executa   o   primeiro   conjunto   de   comandos   cuja   expressão condicional resulta em verdadeiro (.T.).

Sintaxe

DO CASE

CASE lExpressão1

Comandos

[CASE lExpressão2

Comandos

CASE lExpressãoN Comandos]

[OTHERWISE Comandos]

ENDCASE

Argumentos

CASE  lExpressão1  Comandos  …  Quando  a  primeira  expressão CASE verdadeira (.T.) é localizada, o conjunto de comandos que a acompanha é executado. A execução do conjunto de comandos continua até que a próxima cláusula CASE ou ENDCASE seja localizada. A execução é retomada, então, pelo primeiro comando seguinte a ENDCASE.

Se uma expressão CASE for falsa (.F.), o conjunto de comandos seguintes a ela até a próxima cláusula CASE será ignorado.

Apenas  um  conjunto  de  comandos  é  executado.  É  o  primeiro conjunto de comandos cuja expressão CASE resulta em verdadeiro (.T.). Qualquer expressão CASE verdadeira (.T.) posterior será ignorada.

OTHERWISE Comandos Se todas as expressões CASE resultarem em falso (.F.), OTHERWISE determinará se um conjunto de comandos adicionais será executado.

  • Se  você    incluir    OTHERWISE,    os    comandos    que acompanham OTHERWISE serão executados e a execução saltará para o primeiro comando que acompanha ENDCASE.

 

  • Se você  omitir  OTHERWISE,  a  execução  saltará  para  o primeiro comando que acompanha ENDCASE.

Comentários

DO CASE é utilizado para executar um conjunto de comandos do Visual FoxPro, baseado no valor de uma expressão lógica. Quando DO CASE é executado, as expressões lógicas sucessivas são avaliadas; os valores das expressões determinam o conjunto de comandos que será executado.

Podem ser colocados comentários na mesma linha, após DO CASE e ENDCASE. Os comentários são ignorados durante a compilação e execução do programa.

EMPTY() Determina se uma expressão retorna um valor vazio.

Sintaxe

EMPTY(eExpressão)

Tipos de Retorno

Lógico

Argumentos

eExpressão         Especifica   a   expressão   retornada   pela   função

EMPTY( ).

A  expressão  incluída  pode  ser  de  caracteres,  data,  numérica  ou lógica, bem como o nome de um campo Memo ou geral de uma tabela   aberta.   EMPTY( )   retorna   verdadeiro   (.T.)   quando   as expressões retornam um dos valores a seguir:

Tipo de expressão       Retorna este valor

Caractere                      Seqüência   vazia,   espaços,   tabulações, retornos de carro, alimentações de linha ou qualquer combinação dos mesmos.

Numérica                     0

Moeda                           0

Flutuante                      0

Número inteiro           0

Dupla                            0

Data                               Vazio (e.g. CTOD(”))

DataHora                       Vazio (e.g. CTOT(”))

Lógica                           Falso (.F.)

Memo                            Vazio (sem conteúdo)

Geral                             Vazio (sem objeto OLE)

Figura                            Vazio (nenhuma figura)

EMPTY( ) não pode ser utilizada para determinar se uma referência a um  objeto  de  variável  de  memória  é  vazia.  Por  exemplo,  uma variável de memória pode conter uma referência de objeto para um formulário. Se o formulário for fechado a partir da caixa de menu Controle do formulário ou com CLEAR WINDOWS, a variável de memória conterá o valor nulo.

O exemplo de programa a seguir mostra como utilizar TYPE( ) e ISNULL( )  para  determinar  se  uma  referência  a  um  objeto  de variável de memória é válida.

goMyForm = CREATEOBJECT(‘Form’)

WAIT WINDOW IIF(TYPE(‘goMyForm’) = ‘O’ AND

!ISNULL(goMyForm), ;

‘goMyForm has valid object reference’,;

‘goMyForm does not have valid object reference’)

Comentários

EMPTY( )  retornará  verdadeiro  (.T.)  se  a  expressão  eExpressão retornar um valor vazio; caso contrário, EMPTY( ) retornará falso (.F.).

 

EOF() Determina se o ponteiro do registro está posicionado após o último registro na tabela atual ou especificada.

Sintaxe

EOF([nÁreaTrabalho | cAliasTabela])

Tipos de Retorno Lógico Argumentos

nÁreaTrabalho   Especifica o número da Área de trabalho da tabela. cAliasTabela   Especifica o alias da tabela.

EOF( ) retornará falso (.F.) se uma tabela não estiver aberta na Área de trabalho que você especificou.

Se você não especificar uma Área de trabalho ou alias, a tabela que estiver aberta na Área de trabalho selecionada no momento será testada para o final da condição de tabela.

Comentários

EOF( ) retornará verdadeiro (.T.) se o ponteiro do registro alcançar o final  do  arquivo  de  tabela  (EOF).  O  final  da  tabela  é  alcançado quando o ponteiro do registro passa pelo último registro da tabela. Por exemplo, quando os comandos FIND, LOCATE ou SEEK não têm êxito, o Visual FoxPro move o ponteiro do registro para depois do último registro e EOF( ) retorna verdadeiro (.T.). EOF( ) retornará falso (.F.) se o ponteiro do registro não estiver no final da tabela.

EXTERNAL Informa ao Gerenciador de projetos sobre uma referência indefinida.

Sintaxe

EXTERNAL FILE ListaArquivos | ARRAY ListaMatrizes

| CLASS | FORM | LABEL | LIBRARY | MENU

| PROCEDURE | QUERY | REPORT | SCREEN | TABLE

Argumentos

FILE ListaArquivos     Especifica que o arquivo incluído em uma referência indireta ao arquivo ou substituição de macro é um arquivo autônomo, como um arquivo de texto, arquivo de bitmap .BMP e assim por diante. ListaArquivos pode conter uma lista de nomes de arquivos separados por vírgulas.

ARRAY ListaMatrizes     Quando uma matriz é criada em um programa e, em seguida, utilizada em um programa de baixo nível, inclua ARRAY com o nome da matriz no programa de baixo nível. ListaMatrizes pode conter uma lista de nomes de matriz separados por vírgulas.

No exemplo a seguir, o primeiro programa cria uma matriz denominada gaInvoice. A matriz é inicializada e é chamado um programa de baixo nível denominado dispinvo. dispinvo exibe o conteúdo da matriz criada no programa de alto nível. O comando EXTERNAL ARRAY GAINVOICE é incluído para avisar o Gerenciador de projetos.

DIMENSION gaInvoice(4) STORE ‘Pago’ TO gaInvoice DO dispinvo

*** Programa dispinvo *** PROCEDURE dispinvo EXTERNAL ARRAY gaInvoice

? gaInvoice(1)

? gaInvoice(2)

? gaInvoice(3)

? gaInvoice(4) RETURN

*** Final do programa dispinvo ***

Quando uma matriz é passada para uma função ou procedimento definido pelo usuário, a matriz correspondente na função ou procedimento definido pelo usuário deve ser identificada para o Gerenciador de projetos. Inclua a opção ARRAY com o nome da matriz incluído na instrução PARAMETER.

DIMENSION gaArrayOne(2)       && Cria uma matriz EXTERNAL ARRAY gaArrayTwo     && Nome da matriz utilizada na UDF

SET TALK OFF

STORE 10 TO gaArrayOne(1) STORE  2 TO gaArrayOne(2)

= ADDTWO(@gaArrayOne)         && Passa a matriz por referência a uma UDF

FUNCTION ADDTWO PARAMETER gaArrayTwo CLEAR

gaArrayTwo(1) = gaArrayTwo(1) + 2 gaArrayTwo(2) = gaArrayTwo(2) + 2

? gaArrayTwo(1)

? gaArrayTwo(2)

 

CLASS      Especifica  que  o  arquivo  incluído  em  uma  referência indireta ao arquivo ou substituição de macro é uma biblioteca de classes visuais.

EXTERNAL CLASS myvclass  && CLASS myvclass deve existir

STORE ‘myvclass’ TO gcClassFile

MODIFY CLASS (gcClassFile)

FORM    Se um arquivo de definição de Form for incluído em uma referência  indireta  ao  arquivo  ou  substituição  de  macro,  inclua FORM e o nome do arquivo de Form. FORM é idêntico a SCREEN.

EXTERNAL FORM dataentr  && FORM dataentr deve existir

STORE ‘dataentr’ TO gcFormFile

DO FORM (gcFormFile)

LABEL     Especifica que o arquivo incluído em uma referência indireta ao arquivo ou substituição de macro é um arquivo de definição de rótulo.

EXTERNAL LABEL Maillabl   && LABEL FORM Maillabl deve existir

STORE ‘Maillabl’ TO gcLabelFile

LABEL FORM (gcLabelFile) PREVIEW

LIBRARY   Inclua LIBRARY quando um arquivo de biblioteca for indicado por referência indireta ao arquivo ou substituição de macro em SET LIBRARY.

EXTERNAL LIBRARY regress  && LIBRARY regress deve existir

STORE ‘regress’ TO gcStatFunc

SET LIBRARY TO (gcStatFunc)

MENU    Se um arquivo de definição de menu for incluído em uma referência  indireta  ao  arquivo  ou  substituição  de  macro,  inclua MENU e o nome do arquivo de menu.

EXTERNAL MENU pickfile  && MENU pickfile deve existir

STORE ‘pickfile’ TO gcSysMenPad

MODIFY MENU (gcSysMenPad)

 

PROCEDURE      Identifica  um  procedimento  externo  ou  função definida pelo usuário.

EXTERNAL PROCEDURE delblank     && PROCEDURE delblank deve existir

STORE ‘delblank’ TO gcTrimBlanks

DO (gcTrimBlanks) WITH ‘A B C D E’

QUERY     Especifica que o arquivo incluído em uma referência indireta  ao  arquivo  ou  substituição  de  macro  é  um  arquivo  de consulta.

EXTERNAL QUERY sales  && QUERY sales deve existir

STORE ‘sales.qpr’ TO gcSalesFile

DO (gcSalesFile)

REPORT     Especifica que o arquivo incluído em uma referência indireta ao arquivo ou substituição de macro é um arquivo de definição de relatório.

EXTERNAL REPORT overdue   && REPORT overdue deve existir

STORE ‘overdue’ TO gcReportFile

REPORT FORM (gcReportFile) PREVIEW

SCREEN   Se um arquivo de definição de formulário estiver incluído em uma referência indireta ao arquivo ou substituição de macro, inclua SCREEN e o nome do arquivo de tela. SCREEN é idêntico a FORM.

EXTERNAL SCREEN dataentr  && SCREEN dataentr deve existir

STORE ‘dataentr’ TO gcScreenFile

MODIFY SCREEN (gcScreenFile)

TABLE     Especifica que o arquivo incluído em uma referência indireta ao arquivo ou substituição de macro é uma tabela do Visual FoxPro.

EXTERNAL TABLE customer && Table customer deve existir

STORE ‘customer’ TO gcMyTable

USE (gcMyTable)

Comentários

Utilize EXTERNAL para incluir arquivos e resolver referências indefinidas em um projeto criado pelo Gerenciador de projetos. EXTERNAL é utilizado somente pelo Gerenciador de projetos e é ignorado durante a execução do programa.

Arquivos cujos nomes foram especificados com EXTERNAL são incluídos em um projeto pelo Gerenciador de projetos. É preciso incluir CLASS, FILE, FORM, LABEL, LIBRARY, MENU, PROCEDURE, QUERY, REPORT, SCREEN ou TABLE antes dos nomes  de  arquivos  ou  de  um  conjunto  de  nomes  de  arquivos separados com vírgulas para informar ao Gerenciador de projetos o tipo dos arquivos a serem incluídos no projeto.

O Gerenciador de projetos também precisa ser alertado quanto a nomes de arquivos contidos em uma expressão de nome ou substituição de macro. Isso garante que todos os arquivos necessários estejam incluídos em um projeto quando este é criado. Também é necessário informar as matrizes criadas em outro procedimento ou função definida pelo usuário.

Para obter maiores informações sobre expressões de nome e substituição de macro, consulte o comando &. Sempre que possível, utilize uma expressão de nome em vez de uma substituição de macro para melhorar o desempenho.

GO Move o ponteiro do registro para o número de registro especificado.

Sintaxe

GO [RECORD] nNúmeroRegistro [IN nÁreaTrabalho | IN cAliasTabela]

– Ou –

GO TOP | BOTTOM [IN nÁreaTrabalho | IN cAliasTabela]

– Ou –

GOTO [RECORD] nNúmeroRegistro [IN nÁreaTrabalho | IN

cAliasTabela]

– Ou –

GOTO TOP | BOTTOM [IN nÁreaTrabalho | IN cAliasTabela]

Argumentos

RECORD nNúmeroRegistro   Especifica o número do registro físico para o qual o ponteiro do registro deve ser movido. Você pode omitir GO ou GOTO totalmente e especificar apenas o número do registro. Caso especifique apenas o número do registro, você poderá mover o ponteiro do registro somente dentro da Área de trabalho atual.

IN nÁreaTrabalho   Especifica a Área de trabalho da tabela na qual o ponteiro do registro é movido.

IN cAliasTabela   Especifica o alias da tabela na qual o ponteiro do registro é movido.

TOP   Posiciona o ponteiro do registro no primeiro registro na tabela. Caso  a  tabela  esteja  utilizando um índice  ascendente,  o  primeiro registro será o que apresenta o menor valor-chave. Se o índice estiver em ordem descendente, o primeiro registro será o que apresenta o maior valor-chave.

BOTTOM    Posiciona o ponteiro do registro no último registro da tabela. Caso a tabela esteja utilizando um índice ascendente, o último registro será o que apresenta o maior valor-chave. Se o índice estiver em ordem descendente,  o  último  registro  será  o  que  apresenta  o menor valor-chave.

Comentários

GO e GOTO podem ser utilizados alternativamente. Estes comandos operam na Área de trabalho atual da tabela, a menos que você especifique outra Área de trabalho com a cláusula IN.

IF     …     ELSE     … ENDIF Executa condicionalmente um conjunto de comandos baseados no valor de uma expressão lógica.

Sintaxe

IF lExpressão [THEN] Comandos

[ELSE

Comandos] ENDIF

Argumentos

lExpressão   Especifica a expressão lógica avaliada. Caso lExpressão resulte  em  verdadeiro  (.T.),  todos  os  comandos  depois  de  IF  ou THEN e antes de ELSE ou ENDIF (aquele que ocorrer primeiro) serão executados.

  • Se lExpressão for falso (.F.) e ELSE for incluído, todos os comandos depois de ELSE e antes de ENDIF serão executados.

•          Se lExpressão for falso (.F.) e ELSE não for incluído, todos os comandos entre IF e ENDIF serão ignorados. Neste caso, a execução do programa continuará com o primeiro comando depois de ENDIF.

Comentários

É  possível  aninhar  um  bloco  IF… ENDIF  dentro  de  outro  bloco

IF… ENDIF.

Os comentários precedidos por && podem ser colocados na mesma linha depois de IF, THEN, ELSE e ENDIF. Esses comentários são ignorados durante a compilação e a execução do programa.

ISRELOCKED() Retorna o status de bloqueio do registro.

Sintaxe

ISRLOCKED([nNúmeroRegistro, [nÁreaTrabalho | cAliasTabela]])

Tipos de retorno Lógico Argumentos

nNúmeroRegistro    Especifica o número do registro para o qual o status do bloqueio é retornado. Se nNúmeroRegistro é omitido, o status de bloqueio do registro é retornado para o registro atual.

nÁreaTrabalho   Especifica um número de Área de trabalho de uma tabela para a qual o status de bloqueio de registro é retornado. Se for omitido cAliasTabela e nÁreaTrabalho, o status de bloqueio do registro é retornado para a tabela aberta na Área de trabalho atual.

cAliasTabela    Especifica o alias da tabela para a qual o status de bloqueio do registro é retornado.

Comentários

ISRLOCKED( )   retorna   verdadeiro   (.T.)   se   o   registro   estiver bloqueado, caso contrário será retornado falso (.F.).

LOCAL Cria variáveis e matrizes de variáveis locais.

Sintaxe

LOCAL ListaVar

– Ou –

LOCAL [ARRAY] NomeMatriz1(nLinhas1 [, nColunas1]) [, NomeMatriz2(nLinhas2 [, nColunas2])] …

Argumentos

ListaVar   Especifica uma ou mais variáveis locais a serem criadas. [ARRAY] NomeMatriz1 (nLinhas1 [, nColunas1])

[, NomeMatriz2 (nLinhas2 [, nColunas2])] …     Especifica

uma ou mais matrizes locais a serem criadas. Consulte DIMENSION

para obter uma descrição de cada argumento.

Comentários

As variáveis e as matrizes de variáveis locais só podem ser utilizadas e modificadas dentro do procedimento ou função em que são criadas, e não podem ser acessadas por programas de nível mais alto ou baixo.  As  matrizes  e  variáveis  locais  são  liberadas  quando  é concluída a execução do procedimento ou função que as contém.

As variáveis e matrizes criadas com LOCAL são inicializadas com um valor falso (.F.). Qualquer variável de memória ou matriz que você deseje declarar como local deve ser declarada local antes de ter um valor atribuído. O Visual FoxPro gera uma mensagem de erro quando você atribui um valor a uma variável ou matriz e posteriormente a declara local utilizando LOCAL.

As variáveis locais podem ser passadas por referência.

Não abrevie LOCAL porque LOCAL e LOCATE possuem as primeiras quatro letras iguais.

LPARAMETERS Atribui dados passados de um programa de chamada para matrizes ou variáveis locais.

Sintaxe

LPARAMETERS ListaParâmetros

Argumentos

ListaParâmetros    Especifica os nomes de matrizes ou variáveis de memória locais aos quais os dados são atribuídos.

Os parâmetros em ListaParâmetros são separados por vírgulas. A instrução LPARAMETERS deve ter pelo menos o mesmo número de parâmetros  que  a  instrução  DO … WITH.  Se  mais  variáveis  ou matrizes   forem   listadas   na   instrução   PARAMETERS   do   que passadas por DO … WITH, as variáveis ou matrizes restantes serão inicializadas  com  um  valor  falso  (.F.).  Podem  ser  passados  no máximo 27 parâmetros.

Você pode utilizar PARAMETERS( ) para determinar o número de parâmetros passados para o programa, função definida pelo usuário ou procedimento executado mais recentemente.

Comentários

LPARAMETERS cria variáveis ou matrizes locais em um programa, função definida pelo usuário ou procedimento chamado. Utilize PARAMETERS para criar matrizes ou variáveis particulares.

LPARAMETERS deverá ser a primeira instrução executável no programa, função definida pelo usuário ou procedimento chamado se você passar valores, variáveis ou matrizes para um deles.

Como   padrão,   DO … WITH   passa   variáveis   e   matrizes   para procedimentos por referência. Quando um valor for alterado no programa chamado, o novo valor será repassado para a variável ou matriz associada no programa de chamada. Se você desejar passar uma variável ou matriz por valor, coloque-a entre parênteses na lista de parâmetros de DO … WITH. As alterações feitas no parâmetro do programa chamado não são repassadas para o programa de chamada.

Como padrão, as variáveis são passadas por referência para um procedimento e por valor para uma função definida pelo usuário. Utilize SET UDFPARMS TO REFERENCE para passar variáveis para   um   procedimento   ou   função   definida   pelo   usuário   por referência.

 MESSAGEBOX()  Exibe uma caixa de diálogo definida pelo usuário.Sintaxe

MESSAGEBOX(cTextoMensagem      [,      nTipoCaixaDiálogo      [, cTextoBarraTítulo]])

Tipos de retorno Numérico Argumentos

cTextoMensagem     Especifica o texto a ser exibido na caixa de diálogo.  Utilize  um  retorno  de  carro  (CHR(13))  em cTextoMensagem para mover parte da mensagem para a linha seguinte na caixa de diálogo. A altura e a largura da caixa de diálogo serão aumentadas conforme o necessário para conter cTextoMensagem.

nTipoCaixaDiálogo   Especifica os botões e ícones a serem exibidos na caixa de diálogo, o botão padrão a ser selecionado quando a caixa de diálogo for exibida e as ações a serem executadas pela caixa de diálogo.

Nas tabelas a seguir, os valores de botões de caixa de diálogo de 0 a 5 especificam os botões exibidos na caixa de diálogo. Os valores de ícone  16,  32,  48  e  64  especificam  o  ícone  exibido  na  caixa  de diálogo. Os valores padrão 0, 256 e 512 especificam qual será o botão padrão na caixa de diálogo. O botão padrão será selecionado quando a caixa de diálogo for exibida

A  omissão  de  nTipoCaixaDiálogo  tem  o  mesmo  efeito  que  a especificação do valor 0 para nTipoCaixaDiálogo.

Valor                         Botões da caixa de diálogo

 

0                                Somente botão OK.

 

1                                 Botões OK e Cancelar.

 

2                                 Botões Anular, Repetir e Ignorar.

 

3                                 Botões Sim, Não e Cancelar.

 

4                                 Botões Sim e Não.

 

5                                 Botões Repetir e Cancelar.

 

Valor                         Ícone

 

16                               Sinal de parada.

 

32                               Ponto de interrogação.

 

48                               Ponto de exclamação.

 

64                               Ícone de informação (i).

 

Valor                          Botão padrão

 

0                                 Primeiro botão.

 

256                             Segundo botão.

 

512                             Terceiro botão.

 

nTipoCaixaDiálogo pode ser a soma de até três valores — um para

(2+32+256), a caixa de diálogo especificada apresentará as seguintes características:

 

  • Botões Anular, Repetir e Ignorar.

 

  • A caixa de mensagem exibe o ícone ponto de interrogação.

 

  • O segundo botão, Repetir, é o padrão.

 

cTextoBarraTítulo   Especifica o texto a ser exibido na barra de título da caixa de diálogo. Se você omitir cTextoBarraTítulo, o título “Microsoft Visual FoxPro” será exibido na barra de título.

Comentários

O  valor  retornado  por  MESSAGEBOX( )  indica  qual  botão  foi selecionado na caixa de diálogo. Se você pressionar ESC para sair de caixas de diálogo que apresentem o botão Cancelar, será retornado um valor igual (2) ao da seleção do botão Cancelar.

Observe  que  a  abreviação  mais  compacta    para  esta  função  é MESSAGEB( ).

A tabela a seguir lista os valores retornados por MESSAGEBOX( ) para cada botão.

Valor retornado                           Botão

1                                                     OK

2                                                     Cancelar

3                                                     Anular

4                                                     Repetir

5                                                     Ignorar

6                                                     Sim

7                                                     Não

Objeto.Refresh Redesenha um formulário ou um controle e atualiza todos os valores.

Sintaxe

[Form.]Object.Refresh

Comentários

De um modo geral, o desenho de um formulário ou controle é gerenciado automaticamente quando não está ocorrendo nenhum evento. Utilize o método Refresh quando desejar atualizar o formulário ou o controle imediatamente.

Utilize Refresh para fazer com que o formulário ou controle seja totalmente redesenhado e para atualizar o valor de um controle. O método Refresh é útil quando você deseja que um formulário seja exibido enquanto um outro está sendo carregado ou quando você deseja atualizar o conteúdo de um controle. Para atualizar o conteúdo de uma caixa de combinação ou caixa de listagem, utilize o método Requery.

 

Observação     Quando um formulário é atualizado, todos os seus controles também são atualizados. Quando uma moldura de página é atualizada, somente a página ativa é atualizada.

Objeto.Release() Libera um conjunto de formulários ou um formulário da memória.

Sintaxe Object.Release Comentários

O método Release é útil quando um conjunto de formulários ou um formulário  é  criado  com  o  comando  DO  FORM  e  não  existe nenhuma variável através da qual se possa fazer referência ao conjunto de formulários ou ao formulário.

Você pode utilizar o conjunto de formulários do objeto Screen para encontrar o conjunto de formulários ou o formulário e chamar seu método Release.

O método Release imita o comportamento do comando RELEASE

emitido dentro do conjunto de formulários ou formulário.

Objeto.SetFocus() Atribui o foco a um controle.

Sintaxe Control.SetFocus Comentários

Não é possível atribuir o foco a um controle se a propriedade Enabled ou Visible do controle estiver definida como falso ( F ) ou se o evento When do controle retornar falso (.F.). Se a propriedade Enabled ou Visible tiver sido definida como falso (.F.), você deve primeiro defini-la como verdadeiro (.T.) antes que o controle possa receber o foco a partir do método SetFocus.

Depois que um controle tiver o foco, qualquer entrada fornecida pelo usuário será direcionada para ele.

ON ERROR Especifica um comando que é executado quando um erro ocorre.

Sintaxe

ON ERROR [Comando]

Argumentos

Comando   Especifica o comando do Visual FoxPro a ser executado. Após a execução do comando, a execução do programa é retomada na linha logo após à que provocou o erro. No entanto, se o procedimento de gerenciamento de erros incluir RETRY, a linha do programa que provocou o erro será executada novamente.

Caso  o  comando  especifique  um  procedimento  a  ser  executado quando    ocorrer    um    erro,    você    poderá    utilizar    ERROR( ), MESSAGE( ), LINENO( ) e PROGRAM( ) para passar o número do erro, a mensagem de erro, o número da linha do programa e o nome do programa para o procedimento. Estas informações podem ser utilizadas para corrigir a causa do erro.

Comentários

Quando ocorre um erro durante a execução do programa, o Visual FoxPro executa o comando especificado com ON ERROR. Normalmente,  ON  ERROR  utiliza  DO  para  executar  um procedimento de gerenciamento de erros.

Utilize ON ERROR sem um comando para restaurar o Gerenciador de erros padrão do Visual FoxPro.

Os procedimentos ON ERROR não podem ser aninhados. Caso ON ERROR seja emitido a partir de um procedimento, o Gerenciador de erros padrão do Visual FoxPro será restaurado.

ON SHUTDOWN Especifica um comando a ser executado quando você tentar sair do

Visual FoxPro ou Microsoft Windows.

Sintaxe

ON SHUTDOWN [Comando]

Argumentos

Emita ON SHUTDOWN sem Comando para liberar o comando ON SHUTDOWN atual.

Comentários

O comando especificado em ON SHUTDOWN será executado se você tentar sair do Visual FoxPro. Se você tentar sair do Microsoft Windows a partir do Gerenciador de programas, enquanto o Visual FoxPro estiver aberto, o controle será retornado ao Visual FoxPro e o comando especificado em ON SHUTDOWN será executado.

Normalmente, o comando ON SHUTDOWN é um comando DO que executa uma rotina para exibir uma caixa de diálogo. A caixa de diálogo pergunta se você tem certeza de que deseja sair do aplicativo atual e do Visual FoxPro. Se você quiser sair do aplicativo, a rotina poderá fechar arquivos abertos, limpar o ambiente do Visual FoxPro e,  em  seguida,  executar  QUIT.  Caso  você  não  queira  sair  do aplicativo atual, a rotina poderá retornar o controle novamente para o aplicativo.

RETURN Retorna o controle do programa para o programa que originou a chamada.

Sintaxe

RETURN [eExpressão | TO MASTER | TO NomeProcedimento]

Argumentos

eExpressão    Especifica uma expressão retornada para o programa que originou a chamada. Se você omitir RETURN ou a expressão de retorno, verdadeiro (.T.) será retornado automaticamente para o programa de chamada.

TO MASTER    Retorna o controle para o programa de chamada de nível mais alto.

TO  NomeProcedimento      Especifica  o  programa  para  o  qual  o controle é retornado.

Comentários

RETURN finaliza a execução de um programa, procedimento ou função e retorna o controle para o programa que originou a chamada, o programa que originou a chamada de nível mais alto, outro programa ou a janela Comando.

O  Visual  FoxPro  libera  variáveis  de  memória  PRIVATE  quando

RETURN é executado.

Normalmente, RETURN é colocado no fim de um programa, procedimento ou função para retornar o controle para um programa de  nível  mais  alto.  No  entanto,  um  RETURN  implícito  será executado se você omitir esse comando.

RLOCK() Tenta bloquear o(s) registro(s) de uma tabela.

Sintaxe

RLOCK([nÁreaTrabalho | cAliasTabela]

| [cListaNúmerosRegistro, nÁreaTrabalho | cAliasTabela])

Tipos de retorno Lógico Argumentos

nÁreaTrabalho | cAliasTabela     Especifica o número da Área de trabalho ou alias de tabela para uma tabela aberta em outra Área de trabalho.  Se  você  não  especificar  a  Área  de  trabalho  ou  alias, RLOCK( ) irá tentar bloquear o registro atual da tabela na Área de trabalho selecionada no momento.

cListaNúmerosRegistro  Especifica  que  RLOCK( )  tenta  bloquear vários registros. A expressão de caractere cListaNúmerosRegistro especifica um ou mais números de registro, separados por vírgulas,  que RLOCK( ) tenta bloquear. Por exemplo, para tentar bloquear os primeiros  quatro  registros  de  uma  tabela,  cListaNúmerosRegistro deve conter 1, 2, 3, 4.

Para bloquear vários registros, você deve ativar SET MULTILOCKS e incluir o número da Área de trabalho (nÁreaTrabalho) ou o alias (cAliasTabela) da tabela onde tentou bloquear vários registros.

Também é possível bloquear vários registros movendo o ponteiro do registro até aquele que pretende bloquear. A seguir, emita RLOCK( ) ou LOCK( ) e repita este processo para registros adicionais.

No Visual FoxPro, você pode especificar 0 como um número de registro. Esta especificação permite que você bloqueie o cabeçalho da tabela.

Importante   Mantenha o cabeçalho da tabela bloqueado pelo menor tempo  possível,  pois  outros  usuários  não  poderão  acrescentar registros à tabela enquanto aquele estiver bloqueado.

Para liberar o bloqueio do cabeçalho da tabela, utilize UNLOCK RECORD 0, UNLOCK ou UNLOCK ALL.

Se o bloqueio de todos os registros especificados em cListaNúmerosRegistro   for   bem-sucedido,   RLOCK( )   retornará verdadeiro (.T.). Se um ou mais registros especificados em cListaNúmerosRegistro  não  puderem  ser  bloqueados,  RLOCK( ) retornará falso (.F.) e nenhum registro será bloqueado. Em ambos os casos, os bloqueios de registros existentes permanecem na mesma posição. O bloqueio de vários registros é um processo adicional — o posicionamento de bloqueios adicionais não libera os bloqueios existentes.

Quanto  ao  desempenho,  sempre  é  mais  rápido  bloquear  a  tabela inteira do que bloquear até mesmo um pequeno número de registros.

Comentários

RLOCK( ) é idêntico a LOCK( ).

Se o(s) bloqueio(s) for(em) bem-sucedido(s), RLOCK( ) retornará verdadeiro (.T.). Os registros bloqueados encontram-se disponíveis para o acesso de leitura e gravação pelo usuário que posicionou os bloqueios. Já para os demais usuários da rede, a disponibilidade de acesso é somente para leitura.

A  execução  de  RLOCK( )  não  garante  que  a(s)  tentativa(s)  de bloqueio de registro tenha(m) sido bem-sucedida(s). Um bloqueio de registro não pode ser posicionado em um registro ou em uma tabela já bloqueados por outro usuário. Se, por qualquer motivo, o(s) bloqueio(s) de registro não puder(em) ser posicionado(s), RLOCK( ) retornará falso (.F.).

Como padrão, RLOCK( ) tenta bloquear um registro uma vez. Utilize SET REPROCESS para tentar novamente e de forma automática um bloqueio de registro quando a primeira tentativa falhar. SET REPROCESS controla o número de tentativas de bloqueio ou sua duração quando a tentativa de bloqueio inicial é malsucedida. Para obter maiores informações sobre SET REPROCESS e bloqueio de tabelas, consulte SET REPROCESS.

SET  MULTILOCKS  determina  se  você  pode  bloquear  vários registros em uma tabela. Se SET MULTILOCKS estiver desativado (o padrão), você só poderá bloquear um único registro da tabela. Se SET MULTILOCKS estiver ativado, você poderá bloquear vários registros da tabela. Para obter maiores informações, consulte SET MULTILOCKS.

Um registro de tabela só pode ser desbloqueado pelo usuário que fez o bloqueio. Os bloqueios de registro podem ser liberados da seguinte forma: emitindo UNLOCK, fechando a tabela ou saindo do Visual FoxPro.

UNLOCK pode ser utilizado para liberar bloqueios de registro na Área de trabalho atual, em uma Área de trabalho específica ou em todas. Para obter maiores informações, consulte UNLOCK.

Ao passar SET MULTILOCKS de  ativado (ON) para desativado (OFF) ou vice-versa, executa-se implicitamente UNLOCK ALL. Todos os bloqueios de registro de todas as Áreas de trabalho são liberados.

Para fechar tabelas, utilize USE, CLEAR ALL ou CLOSE DATABASES.

Para obter maiores informações sobre o bloqueio de registros e arquivos e o compartilhamento de tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado”, no Guia do Desenvolvedor.

SetAll() Atribui uma definição de propriedade em todos os controles, ou em uma classe específica de controles, de um objeto Container.

Sintaxe

Container.SetAll(cPropriedade, Valor [, cClasse])

Argumentos

cPropriedade   Especifica a propriedade a ser definida.

Valor   Especifica a nova definição da propriedade. O tipo de dado de

Valor depende da propriedade que está sendo definida.

cClasse   Especifica o nome da classe, que é a classe em que o objeto está baseado e não a classe principal do Visual FoxPro para o objeto.

Comentários

Utilize o método SetAll para definir um propriedade para todos, ou para uma classe específica de controles Container. Por exemplo, para definir a propriedade BackColor em todos os objetos Column em um controle Grid com vermelho, emita o seguinte:

Form1.Grid1.SetAll(“BackColor”, RGB(255, 0, 0), “Column”)

Você também pode definir propriedades para objetos que estão contidos por outros objetos dentro do recipiente. Para definir a propriedade ForeColor dos Headers que estão contidos por cada objeto Column contido no controle Grid para a cor verde, emita o seguinte:

Form1.Grid1.SetAll(“ForeColor”, RGB(0, 255, 0), “Header”)

SKIP Move o ponteiro do registro para frente e para trás em uma tabela.

Sintaxe

SKIP

[nRegistros]

[IN nÁreaTrabalho | cAliasTabela]

Argumentos

nRegistros    Especifica o número de registros que serão percorridos pelo ponteiro do registro.

A emissão de SKIP sem nRegistros avançará o ponteiro para o próximo registro. Se nRegistros resultar em um número positivo, o ponteiro do registro se moverá em direção ao final dos registros do arquivo nRegistros. Se nRegistros resultar em um número negativo, o ponteiro do registro se moverá em direção ao começo dos registros do arquivo nRegistros.

Se o ponteiro do registro estiver posicionado sobre o último registro de uma tabela e SKIP for executado sem nenhum argumento, um valor 1 maior que o número de registros na tabela será retornado por RECNO( )  e  EOF( )  retornará  verdadeiro  (.T.).  Se  o  ponteiro  do registro estiver posicionado no primeiro registro de uma tabela e SKIP -1 for executado, RECNO( ) retornará 1 e BOF( ) retornará verdadeiro (.T.).

IN nÁreaTrabalho | cAliasTabela    Move o ponteiro do registro em uma  tabela  dentro  de  uma  Área  de  trabalho  específica. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela especifica um alias de tabela ou de Área de trabalho.

Comentários

Se a tabela tiver uma marca de índice de controle mestre ou um arquivo de índice, SKIP moverá o ponteiro para o registro determinado pela seqüência de índice.

SKIP, exemplo do comando

CLOSE DATABASES

OPEN DATABASE (HOME( ) + ‘samples\data\testdata’) USE customer  && Abre a tabela Customer

CLEAR

SKIP 4 IN ‘customer’

? RECNO(‘customer’)  && Exibe 5

GO BOTTOM SKIP -5

? RECNO( )

TABLEREVERT() Ignora as alterações feitas em uma linha, tabela ou cursor que esteja utilizando buffer e restaura os dados de OLDVAL( ) para cursores remotos e os valores atuais do disco para tabelas e cursores locais.

Sintaxe

TABLEREVERT([lTodasLinhas [, cAliasTabela | nÁreaTrabalho]])

Tipos de retorno Numérico Argumentos

lTodasLinhas    Determina se todas as mudanças feitas na tabela ou no cursor serão ignoradas. Se lTodasLinhas for verdadeiro (.T.), e a utilização do buffer de tabela estiver ativada, as alterações feitas em todos os registros da tabela ou do cursor serão ignoradas. Se lTodasLinhas for falso (.F.) e a utilização do buffer de tabela estiver ativada, somente as alterações feitas no registro atual da tabela ou do cursor serão ignoradas.

Se a utilização do buffer de linha estiver ativada, o valor de lTodasLinhas será ignorado, e as alterações feitas no registro atual da tabela ou do cursor serão ignoradas.

O valor padrão de  lTodasLinhas é falso (.F.).

cAliasTabela     Especifica o alias da tabela ou do cursor cujas alterações serão ignoradas.

NÁreaTrabalho   Especifica a Área de trabalho da tabela ou do cursor cujas alterações serão ignoradas.

Comentários

A função TABLEREVERT( ) retornará o número de registros cujas alterações foram ignoradas.

Observação    Em uma rede, os dados presentes atualmente no disco poderão diferir dos dados contidos no disco quando a tabela e o cursor foram criados. Outros usuários da rede podem ter alterado os dados depois que a tabela foi aberta ou depois que o cursor foi criado.

A função TABLEREVERT( ) não pode ignorar as alterações feitas em uma tabela ou cursor onde a utilização do buffer de linha não esteja ativada. Se você emitir TABLEREVERT( ), e a utilização do buffer de linha ou de tabela não estiver ativada, o Visual FoxPro irá gerar  uma  mensagem  de  erro.  Utilize  a  função CURSORSETPROP( ) para ativar ou desativar a utilização do buffer de linha ou de tabela.

As alterações serão ignoradas na tabela ou cursor aberto na Área de trabalho selecionada atualmente, se TABLEREVERT( ) for emitida sem os argumentos opcionais cAliasTabela ou nÁreaTrabalho.

A função TABLEREVERT( ) não retorna um ponteiro de registro a sua posição original.

TABLEUPDATE() Grava fisicamente as alterações feitas em uma linha, tabela ou cursor que esteja utilizando buffer.

Sintaxe

TABLEUPDATE([nLinhas     [,     lForçar]]     [,     cAliasTabela     |

nÁreaTrabalho] [, cMatrizErro])

Tipos de retorno

Lógico

Argumentos

nLinhas    Especifica se as alterações feitas na tabela ou no cursor serão gravadas fisicamente.Se nLinhas for 0 e a utilização do buffer de tabela ou de linha estiver ativo, apenas as alterações feitas no registro atual da tabela ou do cursor serão gravadas fisicamente.

Se nLinhas for 1 e a utilização do buffer de tabela estiver ativa, as alterações feitas em todos os registros na tabela ou no cursor serão gravadas fisicamente. Se nLinhas for 1 e a utilização do buffer de linha estiver ativo, apenas as alterações feitas no registro atual da tabela ou do cursor serão gravadas fisicamente.

Se nLinhas for 2 e a utilização do buffer de tabela estiver ativa, as alterações feitas em todos os registros na tabela ou no cursor serão gravadas fisicamente. Se nLinhas for 2 e a utilização do buffer de linha estiver ativo, apenas as alterações feitas no registro atual na tabela ou no cursor serão gravadas fisicamente.

Ao contrário do que acontece com os valores 0 e 1 para nLinha, um erro não ocorre quando uma alteração não pode ser gravada fisicamente e o Visual FoxPro continua a processar qualquer registro restante na tabela ou no cursor. Se cMatrizErro for incluída, uma matriz contendo informações de erro será criada quando ocorrer um erro.

O valor padrão para nLinhas é 0.

lForçar   Determina se as alterações feitas na tabela ou no cursor por outro usuário da rede serão sobrescritas. Se lForçar for verdadeiro (.T.), quaisquer alterações feitas na tabela ou no cursor por outro usuário da rede serão sobrescritas.

Se lForçar for falso (.F.), o Visual FoxPro gravará fisicamente as alterações na tabela ou no cursor, começando com o primeiro registro até o fim da tabela ou do cursor. Se um registro modificado por outro usuário da rede for encontrado, o Visual FoxPro irá gerar um erro.

Quando  o  Visual  FoxPro  gera  o  erro  ,  este  pode  ser  gerenciado através da rotina ON ERROR, e esta rotina pode emitir a função TABLEUPDATE( ) com lForçar definido para verdadeiro (.T.) a fim de gravar fisicamente as alterações feitas no registro. Opcionalmente, se uma transação estiver em andamento, a rotina ON ERROR poderá gerenciar o erro e, em seguida, emitir ROLLBACK para reverter a tabela ou o cursor para seu estado original.

O valor padrão para lForçar é falso (.F.).

cAliasTabela    Especifica o alias da tabela ou do cursor no qual as alterações são gravadas fisicamente.

nÁreaTrabalho   Especifica a Área de trabalho da tabela ou do cursor no qual as alterações são gravadas fisicamente.

cMatrizErro      Especifica  o  nome  de  uma  matriz  criada  quando nLinhas  é  2  e  altera  um  registro  que  não  pode  ser  gravado fisicamente. A matriz possui uma coluna simples contendo o número dos registros para os quais as alterações não puderam ser gravadas fisicamente.

Comentários

A  função  TABLEUPDATE( )  retornará  verdadeiro  (.T.)  se  as alterações feitas em todos os registros forem gravadas fisicamente; do  contrário,  TABLEUPDATE( )  retornará  falso  (.F.).  Se  você especificar 0 ou 1 nLinha, o ponteiro do registro permanece em um registro onde as alterações não puderam ser gravadas fisicamente e pode emitir AERROR( ) para determinar porque as alterações não puderam ser gravadas.

A  função  TABLEUPDATE( )  não  poderá  gravar  fisicamente  as alterações feitas em uma tabela ou cursor que não tenha a utilização do buffer de linha ou de tabela ativada. Se você emitir TABLEUPDATE( ), e a utilização do buffer de linha não estiver ativada,   o   Visual   FoxPro   irá   gerar   uma   mensagem   de   erro. Entretanto,  TABLEUPDATE( )  ainda  poderá  gravar  fisicamente alterações em uma tabela ou cursor que possua regras de validação. Utilize CURSORSETPROP( ) para ativar ou desativar a utilização do buffer de linha ou de tabela.

As alterações são gravadas fisicamente na tabela ou no cursor aberto na Área de trabalho atualmente selecionada se TABLEUPDATE( ) for emitida sem os argumentos opcionais cAliasTabela ou nÁreaTrabalho.

UNLOCK Libera um bloqueio de registro, bloqueios de múltiplos registros ou um bloqueio de arquivo de uma tabela, ou libera todos os bloqueios de registros e arquivos de todas as tabelas abertas.

Sintaxe

UNLOCK

[RECORD nNúmeroRegistro]

[IN nÁreaTrabalho | cAliasTabela]

[ALL]

Argumentos

RECORD    nNúmeroRegistro Libera o bloqueio do registro em um registro de número nNúmeroRegistro. Você pode especificar 0 para nNúmeroRegistro para desbloquear o cabeçalho de tabela com LOCK(0) ou RLOCK(0).

A  emissão  de  UNLOCK  RECORD  nNúmeroRegistro  para  um registro  em  uma  tabela  com  um  bloqueio  de  arquivo  libera  o bloqueio.

IN  nÁreaTrabalho  |  cAliasTabela        Libera  um  bloqueio  (ou bloqueios) de registro ou um bloqueio de arquivo de uma tabela em uma determinada Área de trabalho. nÁreaTrabalho especifica o número da Área de trabalho e cAliasTabela especifica o alias da tabela.   Se   você   não   incluir   nÁreaTrabalho   ou   cAliasTabela, UNLOCK irá liberar um bloqueio (ou bloqueios) de registro ou um bloqueio de arquivo da tabela na Área de trabalho selecionada no momento.

ALL   Libera todos os bloqueios de registros e de arquivos em todas as áreas de trabalho.

Para obter maiores informações sobre o bloqueio de registros e de arquivos e o compartilhamento de tabelas em uma rede, consulte o capítulo 17, “Programando para acesso compartilhado,” no Guia do Desenvolvedor.

Comentários

Os bloqueios de registros e de arquivos só podem ser removidos de uma tabela pelo usuário que os executou. UNLOCK não consegue desbloquear uma tabela aberta para uso exclusivo.

Um bloqueio (ou bloqueios) de registro ou um bloqueio de arquivo será liberado de uma tabela na Área de trabalho atual se você emitir UNLOCK sem argumentos adicionais.

Caso tenham sido estabelecidas relações entre tabelas, a liberação de um bloqueio (ou bloqueios) de registro ou de um bloqueio de arquivo de uma das tabelas não desbloqueará os registros ou arquivos relacionados. É preciso liberar os bloqueios de registros ou de arquivos  explicitamente  em cada  arquivo  relacionado.Você pode liberar todos os bloqueios em quaisquer tabelas relacionadas emitindo UNLOCK ALL (isso também libera bloqueios em arquivos não-relacionados).

UPPER() Retorna a expressão de caracteres especificada em maiúscula.

Sintaxe

UPPER(cExpressão)

Tipos de retorno

Caractere

Argumentos

cExpressão       Especifica  que  expressão  de  caracteres  UPPER( ) converte em maiúscula.

Comentários

Cada letra minúscula (a – z) na expressão de caracteres é convertida em maiúscula (A – Z) na seqüência retornada. Todos os outros caracteres permanecem inalterados.

 

Print Friendly, PDF & Email

Sobre o Autor