Home
Capitulo 7
Contents
1. Excluindo uma tabela livre Se uma tabela n o estiver associada a um banco de dados poss vel excluir o arquivo da tabela por meio do Gerenciador de projetos ou utilizando o comando DELETE FILE k Para excluir uma tabela livre e No Gerenciador de projetos selecione a tabela livre escolha Remover e depois Excluir Ou e Utilize o comando DELETE FILE Por exemplo se sample for a tabela atual o c digo a seguir fechar a tabela e excluir o arquivo do disco USE DELETE FILE sample dbf O arquivo que voc deseja excluir n o pode estar aberto quando o comando DELETE FILE for emitido Caso voc exclua uma tabela que tenha um arquivo de memo FPT ou arquivos de ndice CDX ou IDX lembre se de excluir tamb m esses arquivos Por exemplo se o arquivo sample dbf tivesse um arquivo de memo associado voc poderia excluir ambos com os comandos a seguir USE DELETE FILE sample dbf DELETE FILE sample fpt Duplicando uma tabela Voc pode criar uma c pia de uma estrutura de tabelas seus procedimentos armazenados express es de disparadores e valores de campo padr o utilizando a linguagem N o h op o de menu para executar a mesma fun o Esse procedimento n o copia o conte do da tabela k Para duplicar uma tabela 1 Abra a tabela original 2 Utilize o comando COPY STRUCTURE para fazer uma c pia da tabela original 3 Abra a tabela vazia criad
2. Representante de vendas TAG reps crtry title Representante de vendas Sim Fepresentarte de vendas Country last rem i Construir indice F Unido Dodsworth em County F Unido King Last Name R Unido Suyarra E Unidos Davolio TITE PES Erro E Unidos Laverling E Unidos Peacock E Employee Address D7 20th Ave E Apt 2A Houndstooth Ad Edgeham Hollow Winchester Way 4110 Old Redmond Rd INDEX 0 N courtry hast name FOR title Representante de vendas TAG reps crtry Tag REPS CNTRY Country last rama Construir ndice R Unido Dodsmorth em Country Last Name R Unido Suya re y E Unidos Davolio E Unidos Leverling E Employee Filtrando dados temporariamente Voc pode utilizar o comando SET FILTER para filtrar dados temporariamente sem criar um ndice filtrado especial Esse comando particularmente til quando voc deseja especificar uma condi o tempor ria que os registros de uma tabela devem satisfazer para serem acessados Para desligar o filtro da tabela atual voc pode emitir SET FILTER TO sem uma express o Por exemplo o comando a seguir seria emitido para filtrar a tabela customer de forma a mostrar somente os clientes da Alemanha USE customer SET FILTER TO country Germany BROWSE O comando SET FILTER aceita qualquer express o l gica e v lida do V
3. Ou e Utilize a fun o DBSETPROP Por exemplo voc talvez queira deixar mais claro o que est armazenado no campo unit price da tabela orditems Para fazer isso voc digita Pre o atual de venda por unidade como um texto de coment rio para este campo DBSETPROP orditems price field comment Pre o atual de venda por unidade Para obter maiores informa es sobre como utilizar DBSETPROP para definir propriedades em campos de uma tabela de banco de dados consulte o cap tulo 6 Criando bancos de dados Criando valores padr o para os campos Se quiser que o Visual FoxPro preencha automaticamente o conte do de um campo sempre que voc adicionar um novo registro voc poder criar um valor padr o para o campo O valor padr o utilizado n o importando se os dados foram digitados em um formul rio em uma janela Pesquisar uma visualizac o ou atrav s da linguagem de programa o e permanece no campo at que um novo valor seja fornecido Voc cria valores padr o atrav s do Criador de tabelas ou atrav s da linguagem Voc pode especificar valores padr o para qualquer tipo de dado exceto o tipo Geral k Para atribuir um valor padr o para um campo de uma tabela e No Criador de tabelas digite o valor na caixa Valor padr o na rea Valida o do campo Ou e Utilize a cl usula DEFAULT do comando CREATE TABLE Por exemplo voc talvez queira que seu aplicativo limite a quantidade
4. Por exemplo voc pode ter uma tabela que armazene o c digo DDD e o n mero de telefone em duas colunas C digo DDD N mero de telefone 206 444 nnnn 206 555 nnnn 313 444 nnnn Tanto o campo de c digo DDD quanto o de n mero de telefone cont m valores duplicados Contudo n o existem n meros de telefone duplicados porque a combina o dos dois campos forma um valor separado Se o ndice prim rio ou candidato especificar ambas as colunas na express o do ndice as linhas do exemplo n o seriam consideradas duplicadas Se voc tentasse inserir um valor que correspondesse exatamente ao mesmo c digo de rea e n mero de telefone de uma das linhas existentes o Visual FoxPro rejeitaria a entrada como sendo duplicada Utilizando valores nulos nas express es de ndice Voc pode criar ndices utilizando campos que contenham valores nulos As express es de ndice que resultarem em NULL ser o inseridas no arquivo CDX ou IDX antes das entradas n o nulas Todos os valores nulos ser o colocados no in cio do ndice O exemplo a seguir demonstra um dos efeitos de se indexar valores nulos Este o estado da tabela antes de o ndice ser aplicado H valores nulos no campo SocSec de dois registros E Exemplo Ioj x Record Lastname Firstname Socsec 111 000 2222 Valores nulos Pachiardi O valor NULL em dois registros representa o fato de que os n meros de previd ncia social de Anne Dunn e Alan Carter
5. Uma tabela do Visual FoxPro ou arquivo DBF pode existir em um dos estados a seguir como uma tabela de banco de dados uma tabela associada a um banco de dados ou como uma tabela livre que n o esteja associada a qualquer banco de dados As tabelas associadas a um banco de dados possuem diversas vantagens em rela o s tabelas livres Quando uma tabela parte de um banco de dados poss vel criar e Nomes extensos para a tabela e seus campos e Legendas e coment rios para cada campo da tabela e Valores padr o m scaras de entrada e formatos para campos da tabela e Classe de controle padr o para campos de tabela e Regras de campos e de registros e ndices de chave prim ria e relacionamentos de tabela para suportar regras de integridade referencial e Um disparador para cada evento INSERT UPDATE ou DELETE Alguns recursos podem ser utilizados somente com tabelas de banco de dados Para obter informa es sobre como associar tabelas a um banco de dados consulte o cap tulo 6 Criando bancos de dados As tabelas de um banco de dados t m propriedades que as tabelas livres n o t m Arquivo de banco de dados Tabehas do banco de dados Tabebs livres customer dbf postcode dbf mydata dbc cuetomer Informa oes da tabela customer Non extenso da tabela Legenda Disparador de exclus o Disparador de insers o Disparador de atua iza o Nomes extensos de campos emplovee dbf maps dbf Va
6. amp amp armazena um valor do tipo caractere no campo Voc pode utilizar o comando UPDATE SQL em vez do comando REPLACE para atualizar registros em uma tabela Incluindo registros de outra tabela Outra forma de armazenar dados em registros copi los de outras tabelas ou arquivos Por exemplo voc pode incluir registros de outra tabela ou arquivo k Para incluir registros de outro arquivo e Utilize o comando APPEND FROM Ou e Utilize o comando IMPORT Os registros podem aceitar dados diretamente como no exemplo anterior onde o comando INSERT especificou o texto a ser inserido em campos espec ficos da tabela customer Os dados podem tamb m vir de constantes vari veis matrizes objetos e outras fontes de dados Para obter maiores informa es sobre outras formas de importar dados consulte o cap tulo 9 Importando e exportando dados no Guia do Usu rio Adicionando registros no modo de pesquisa Se voc deseja adicionar um novo registro enquanto visualiza uma tabela no modo de pesquisa selecione Incluir registro no menu Tabela Por outro lado se voc deseja impedir que os usu rios possam incluir um novo registro enquanto est o no modo de pesquisa utilize a cl usula NOAPPEND do comando BROWSE Inserindo dados em uma tabela Voc pode inserir dados a uma tabela de forma interativa atrav s de uma janela Pesquisar ou utilizando a linguagem de programa o com os comandos REPLACE ou UP
7. s o aplicadas pelo mecanismo do Visual FoxPro o n vel em que s o aplicadas e o momento em que a valida o ativada Mecanismo de N vel Ativado execu o Valida o de NULO Campo ou Quando voc sai do coluna campo coluna em uma pesquisa ou quando o valor do campo muda durante um INSERT ou REPLACE Regras em n vel de Campo ou Quando voc sai do campo coluna campo coluna em uma pesquisa ou quando o valor do campo muda durante um INSERT ou REPLACE Regras em n vel de Registro Quando ocorre a atualiza o registro do registro ndice Registro Quando ocorre a atualiza o candidato prim rio do registro Cl usula VALID Formul rio Quando voc sai do registro Disparadores Tabela Quando os valores da tabela s o alterados durante um evento INSERT UPDATE ou DELETE As restri es s o ativadas na ordem em que est o colocadas na tabela A primeira viola o de qualquer teste de valida o interrompe o comando Os ndices candidato e prim rio s o explicados posteriormente neste cap tulo na se o Controlando valores duplicados Limitando os valores de um campo Para controlar o tipo de informa o que um usu rio pode digitar em um campo quando for poss vel validar os dados de um campo independentemente de qualquer outra entrada no registro utiliza se uma regra de valida o em n vel de campo Por exemplo poss vel utilizar uma regra de valida o de campo para assegurar que o usu rio
8. s entradas do arquivo de ndice que cont m somente valores nicos j que nunca armazena uma determinada chave mais do que uma vez ignorando as ocorr ncias posteriores de um valor n o nico Uma tabela indexada por um ndice nico pode conter valores duplicados Os tipos de ndice nicos s o fornecidos basicamente para fins de compatibilidade com vers es anteriores Um ndice normal simplesmente um ndice que n o nico nem prim rio nem candidato Os ndices normais s o utilizados para ordenar e procurar registros mas n o para garantir que os dados nesses registros sejam nicos Voc tamb m pode utilizar um ndice normal como o lado n de um relacionamento permanente um para n k Para criar um ndice normal e No Criador de tabelas escolha a guia ndice e crie um ndice selecionando Normal como tipo do ndice Ou e Utilize o comando INDEX Por exemplo os comandos a seguir tornam city uma chave normal para a tabela customer USE customer INDEX ON city TAG city Criando v rios ndices medida que for trabalhando com os registros de sua tabela voc descobrir a necessidade de acessar os registros da tabela em v rias sequ ncias diferentes Por exemplo voc pode querer ordenar a tabela customer por telefone para encontrar rapidamente um nome ou por c digo postal para gerar etiquetas de mala direta j ordenadas e facilitar a postagem Para criar e armazenar diversos cen ri
9. TAG title OF ORTLYRPT INDEX ON hire date TO TAG hiredate OF QRTLYRPT Utilizando ndices independentes O arquivo de ndice independente baseado em uma express o de chave nica armazenado como um arquivo IDX Ao contr rio dos ndices CDX que podem armazenar express es utilizando chaves m ltiplas o ndice IDX armazena somente uma nica express o chave Os ndices independentes s o geralmente utilizados como ndices tempor rios criados ou reindexados quando for necess rio us los Por exemplo voc pode ter um ndice utilizado somente para um relat rio de resumo trimestral ou anual Em vez de incluir este ndice pouco utilizado no CDX estrutural onde seria mantido todas as vezes em que voc utilizasse a tabela poss vel criar um ndice independente IDX Voc pode criar quantos arquivos IDX quiser para uma determinada tabela Para criar um ndice independente IDX e Utilize a cl usula COMPACT do comando INDEX Ou e Utilize o comando COPY TAG O comando INDEX utilizado com a cl usula COMPACT cria um novo ndice independente em um arquivo de ndice pequeno e que pode ser acessado rapidamente Voc pode omitir a cl usula COMPACT se quiser criar um arquivo IDX independente n o compacto para manter a compatibilidade com os antigos formatos de ndice do FoxBASE e e FoxProe vers o 1 0 O c digo a seguir cria um arquivo IDX independente utilizando order date na tabela orders ordena
10. Tamb m poss vel utilizar o Criador de tabelas para renomear tabelas ou adicionar nomes extensos a tabelas que foram criadas sem eles Por exemplo quando voc adicionar uma tabela livre a um banco de dados poss vel utilizar o Criador de tabelas para adicionar um nome extenso tabela Os nomes extensos podem conter letras d gitos ou caracteres de sublinhado e devem come ar com uma letra ou caractere de sublinhado Voc n o pode utilizar espa os em nomes de tabela extensos Renomeando uma tabela Voc pode renomear tabelas de bancos de dados atrav s da interface porque est alterando o nome extenso Se remover a tabela do banco de dados o nome de arquivo para a tabela ret m o nome original As tabelas livres n o possuem um nome extenso e somente podem ser renomeadas utilizando a linguagem k Para renomear uma tabela em um banco de dados 1 No Criador de bancos de dados selecione a tabela a ser renomeada 2 No menu Banco de dados selecione Modificar 3 No Criador de tabelas digite um novo nome para a tabela na caixa Nome da tabela na guia Tabela k Para renomear uma tabela livre e Utilize o comando RENAME Cuidado Se voc utilizar o comando RENAME em tabelas associadas a um banco de dados o comando n o atualizar o v nculo retroativo no banco de dados e poder causar erros de acesso tabela Excluindo uma tabela de banco de dados Se uma tabela estiver associada a um banco de dados poss vel ex
11. a um formul rio o formato para o conte do dos campos ou a legenda que rotula o conte do do campo Observa o As tabelas no Visual FoxPro podem conter at 255 campos Se um ou mais campos contiverem valores nulos o n mero m ximo de campos que a tabela poder conter ser reduzido em um de 255 para 254 Nomeando campos Os nomes dos campos s o especificados quando voc cria uma nova tabela Esses nomes podem ter at 10 caracteres para tabelas livres ou 128 caracteres para tabelas de banco de dados Caso voc remova uma tabela de um banco de dados os nomes de campo extensos da tabela ser o truncados para 10 caracteres k Para nomear um campo de tabela e No Criador de tabelas digite um nome de campo na caixa Nome Ou e Utilize o comando CREATE TABLE ou o comando ALTER TABLE Por exemplo para criar e abrir a tabela customer com tr s campos cust id company e contact voc utilizaria o comando a seguir CREATE TABLE customer cust id C 6 company C 40 contact C 30 No exemplo acima o C 6 significa um campo com dados de Caractere e largura 6 A escolha dos tipos de dados para os campos abordada posteriormente nesta se o Utilizando o comando ALTER TABLE voc adiciona os campos company e contact a uma tabela existente denominada customer ALTER TABLE customer ADD COLUMN company C 40 contact C 30 Utilizando nomes de campos reduzidos Quando voc cria uma tabe
12. anteriores abrem o Criador de tabelas Para modificar a estrutura de uma tabela utilizando a linguagem de programa o e Utilize o comando ALTER TABLE O comando ALTER TABLE possui diversas cl usulas que permitem adicionar ou retirar campos da tabela criar ou retirar chaves prim rias ou exclusivas ou marcas de chaves estrangeiras e renomear os campos j existentes Algumas cl usulas dizem respeito somente a tabelas associadas a um banco de dados Alguns exemplos espec ficos foram inclu dos nesta se o Adicionando campos Voc pode adicionar um novo campo a uma tabela com o Criador de tabelas ou utilizando a linguagem Para adicionar um campo a uma tabela e No Criador de tabelas escolha Inserir Ou e Utilize a cl usula ADD COLUMN do comando ALTER TABLE Por exemplo o comando a seguir adiciona um campo denominado fax tabela customer e permite que o campo tenha valores nulos ALTER TABLE customer ADD COLUMN fax c 20 NULL Excluindo campos Voc pode excluir um campo j existente de uma tabela utilizando o Criador de tabelas ou a linguagem k Para excluir um campo de uma tabela e No Criador de tabelas selecione o campo e escolha Excluir Ou e Utilize a cl usula DROP COLUMN do comando ALTER TABLE Por exemplo o comando a seguir exclui o campo fax da tabela customer ALTER TABLE customer DROP COLUMN fax Quando um campo removido de uma tabela a defini o de
13. arquivos CDX estruturais e arquivos IDX de ndice nico e os reindexa da forma adequada Ele atualiza todas as marcas nos arquivos CDX e atualiza os arquivos CDX estruturais que s o abertos automaticamente com a tabela Voc pode tamb m atualizar arquivos de ndice desatualizados com o comando REINDEX Reindexando em tempo de execu o Uma reindexa o leva tempo particularmente ao reindexar grandes tabelas Reindexe somente quando necess rio Voc pode melhorar o desempenho se a reindexa o for feita durante a inicializa o ou finaliza o de seu programa em vez de ser executada durante a parte principal de um aplicativo Utilizando ndices para otimizar consultas Voc pode utilizar ndices para acelerar consultas e outras opera es Para obter informa es sobre como criar express es de ndice otimiz veis por Rushmore consulte o cap tulo 15 Otimizando aplicativos Utilizando v rias tabelas Para utilizar mais de uma tabela s o utilizadas sess es de dados para controlar tabelas dispon veis para formul rios e reas de trabalho para definir as tabelas abertas Uma rea de trabalho uma regi o numerada que identifica uma tabela aberta Voc pode abrir e manipular as tabelas do Visual FoxPro em 32 767 reas de trabalho As reas de trabalho s o normalmente identificadas nos aplicativos por meio do alias da tabela aberta na rea de trabalho Um alias de tabela um nome que se refere
14. comando SET RELATION A janela Sess o de dados exibe os aliases das tabelas abertas e os relacionamentos tempor rios Sess o de dados Of x Sess o atual Padr o 1 A seta acima mostra que a tabela Aliases Rela es Orders classificada por um ndice Propriedades Orders Customer Pesquisar Abrir Fechar Rela es Ez 1 paran E Banco de dados Testdata rea de trabalho 1 Registros 1078 Ajanela de aliases exibe as tabelas abertas Sess o de dados IO xX Sess o atual Padr o 1 A seta acima mostra que a tabela Aliases Rela es Orders classificada por um ndice t Customer Propriedades Orders Customer Pesquisar Ajanela de aliases exibe as ai tabelas abertas ae Rela es E 1 paran E Banco de dados Testdata Area de trabalho 1 Registros 1078 Ajanela de relacionamentos exibe relacionamentos tempor rios entre as tabelas Customer e Orders Voc criou um ndice para a tabela filho orders para organizar os registros dessa tabela em grupos de acordo com o cliente que efetuou o pedido Quando voc criar um relacionamento entre a tabela pai e o ndice da tabela filho o Visual FoxPro selecionar somente os registros da tabela filho cuja chave de ndice corresponda chave de ndice do registro pai selecionado O exemplo anterior estabeleceu um relacionamento nico entre duas tabelas Voc pode tamb m utilizar o comando SET RE
15. disparadores para e Registrar modifica es no banco de dados e Executar a integridade referencial e Criar uma nova ordem autom tica para um produto cujo estoque est baixo Os disparadores s o criados e armazenados como propriedades de uma tabela espec fica Caso voc remova uma tabela de um banco de dados os disparadores associados a essa tabela ser o exclu dos Os disparadores ser o ativados depois que todas as outras verifica es como regras de valida o verifica o de chave prim ria e verifica o de valores nulos forem executadas E ao contr rio das regras de valida o em n vel de campo e de registro os disparadores n o s o ativados quando os dados est o no buffer Criando disparadores Para criar disparadores utilize o Criador de tabelas ou o comando CREATE TRIGGER Para cada tabela voc pode criar um disparador para cada um dos tr s eventos INSERT UPDATE e DELETE Uma tabela pode ter no m ximo tr s disparadores simultaneamente Um disparador deve retornar um valor verdadeiro T ou falso F k Para criar um disparador e Na guia Tabela do Criador de tabelas digite a express o do disparador ou o nome de um procedimento armazenado que contenha a express o do disparador na caixa Disparador de inser o Disparador de atualiza o ou Disparador de exclus o Ou e Utilize o comando CREATE TRIGGER Por exemplo a cada vez que o Tasmanian Traders vender um item eles querem compa
16. exclua uma tabela de um banco de dados todos os valores padr o associados quela tabela ser o exclu dos do banco de dados Os procedimentos armazenados aos quais feita refer ncia por um valor padr o removido ou exclu do permanecer o mesmo ap s a remo o desse valor padr o Quando voc n o especificar um valor padr o um valor em branco conforme definido para cada tipo de dado ser inserido a menos que SET NULL esteja ativado ON Isso mant m a compatibilidade com as vers es anteriores de c digo FoxPro que voc possa ter poss vel utilizar NULL como um valor padr o se voc quiser que o campo utilize valores nulos Se NULL for utilizado como valor padr o o Visual FoxPro inserir NULL para todos os comandos exceto APPEND BLANK quer SET NULL esteja ativado ON ou desativado OFF Valores padr o permitidos Voc pode especificar valores padr o que sejam valores escalares como um n mero ou express es que resultem em uma quantidade escalar Tamb m poss vel especificar qualquer express o v lida de Xbase que retorne um valor consistente com o tipo de dado do campo O Visual FoxPro avalia o tipo de dado das express es quando a estrutura da tabela fechada Se o tipo de dado n o corresponder ao tipo de campo associado o Visual FoxPro gerar um erro Se a express o for uma fun o definida pelo usu rio UDF ou contiver uma UDF ela n o ser avaliada Quando voc cria o valor padr
17. independente J que um arquivo de ndice independente cont m uma nica express o de chave de ndice para excluir a express o basta excluir o arquivo IDX do disco k Para excluir um arquivo IDX e Utilize o comando DELETE FILE Por exemplo o c digo a seguir exclui o arquivo de ndice IDX independente ORDDATE IDX DELETE FILE orddate idx Voc pode tamb m utilizar uma utilit rio como o Windows Explorer para excluir um arquivo IDX independente desnecess rio Indexando por express es Voc pode aumentar o poder de seus aplicativos criando ndices baseados em express es Essas express es podem ser simples ou complexas dependendo do que voc quer fazer Indexando por express es simples Express es de ndice simples s o ndices baseados em campos nicos ou na concatena o de dois ou mais campos de caractere para formar uma chave de campos m ltiplos Por exemplo voc pode querer criar um ndice para a tabela Customer no banco de dados TasTrade baseado na express o country region cust id Ao pesquisar a tabela Customer utilizando esta marca de ndice voc ver os clientes ordenados por pa s regi o e n mero de identifica o Utilizando uma express o para impedir duplicatas em uma combina o de campos Para impedir a duplica o de valores em uma combina o de campos voc pode criar um ndice prim rio ou candidato baseado em uma express o que combine esses campos
18. ncia a um procedimento armazenado ou UDF em uma express o de ndice uma vez que isso aumenta o tempo necess rio para criar o ndice Utilizando dados de um campo de outra tabela em uma marca de ndice Voc pode criar uma marca de ndice que se refira a uma tabela aberta em outra rea de trabalho conveniente utilizar um ndice independente IDX para qualquer marca que se refira a mais de uma tabela Isso porque se voc inclu sse uma marca que fizesse refer ncia a outra tabela em um arquivo CDX estrutural o Visual FoxPro n o permitiria que voc abrisse a tabela antes de ter aberto a tabela referenciada na marca de ndice Acessando registros em ordem descendente Para visualizar os registros em ordem descendente crie um ndice descendente ou leia um ndice j existente em ordem descendente k Para criar um ndice descendente e Na guia ndice do Criador de tabelas escolha o bot o de dire o esquerda da caixa Nome de modo que a seta fique apontando para baixo e Ou E e Utilize a cl usula DESCENDING com o comando INDEX ON para criar um ndice descendente Para criar arquivos de ndice estrutural composto voc pode utilizar qualquer um desses m todos Para criar outros tipos de arquivos de ndice voc pode utilizar o segundo m todo Por exemplo voc poderia criar um novo ndice descendente ordenando sua tabela product do maior unit price para o menor e pesquisar a tabela na nova ordem com o c digo
19. pode mover se de uma rea de trabalho para outra utilizando o comando SELECT Por exemplo se CUSTOMER DBF estiver aberto em uma rea de trabalho e o alias padr o CUSTOMER tiver sido atribu do voc pode mover se para essa rea de trabalho com o comando SELECT a seguir SELECT customer Fazendo refer ncia a tabelas abertas em outras reas de trabalho Voc pode tamb m fazer refer ncia a campos em outras reas de trabalho utilizando o nome de alias e um ponto ou o operador gt como prefixo do nome de campo Por exemplo caso voc esteja em uma rea de trabalho e queira acessar o campo contact da tabela Customer aberta em outra rea de trabalho utilize o seguinte para referir se ao campo customer contact Se a tabela a que voc deseja fazer refer ncia tiver sido aberta com um alias voc pode utilizar o nome do alias Por exemplo se a tabela Customer tiver sido aberta com o alias people voc pode se referir ao campo last name da forma a seguir people lastname Utilizar o nome da tabela ou o alias da tabela identifica especificamente a tabela desejada n o importando em qual rea de trabalho a tabela esteja aberta Definindo relacionamentos tempor rios entre tabelas Ao estabelecer um relacionamento tempor rio entre tabelas voc faz com que o ponteiro de registro de uma tabela a tabela filho siga automaticamente os movimentos do ponteiro de registro na outra tabela a tabela pai Isso permite que voc seleci
20. preparaadmarin Sommer 28023 n555225 eona JimmenceLevihan 13008 01 244540 E inet Collor hia Cliszobatdo Linaala ITA O O LONE az Para permitir que o usu rio visualize a grade em ordem de contact ou postal code insira o c digo abaixo no evento Click do cabe alho de cada coluna Exemplo de c digo de evento para ordenar registros em uma Grade clicando no cabe alho da coluna C digo Coment rio SET ORDER TO company No c digo de evento Click do cabe alho de GO TOP Company reordena a grade utilizando a THISFORM Refresh chave de ndice company e atualiza o formul rio para exibir os registros ordenados por empresa SET ORDER TO contact No c digo de evento Click do cabe alho de GO TOP Contact reordena a grade utilizando a THISFORM Refresh chave de ndice contact e atualiza o formul rio para exibir os registros ordenados por nome de contato SET ORDER TO No c digo de evento Click do cabe alho de postalcode GO TOP a chave de ndice postalcode e atualiza o THISFORM Refresh formul rio para exibir os registros ordenados por c digo postal J que uma classifica o por n mero de telefone n o relevante para este aplicativo deixe o c digo de evento Click do cabe alho de Phone em branco Neste exemplo quando o formul rio for exibido inicialmente a grade ser exibida em ordem alfab tica por empresa Quando o usu rio clicar sobre o cabe alho da co
21. rio Utilizando as fun es do Visual FoxPro em uma marca de ndice As fun es do Visual FoxPro podem ser utilizadas em uma marca de ndice Por exemplo poss vel utilizar a fun o STR para converter um valor num rico em uma sequ ncia de caracteres Para criar uma marca de ndice para a tabela customer que combinasse o campo cust idcomo campo maxordamt voc poderia converter o campo maxordamt do tipo Moeda com uma largura de 8 em um campo de 8 caracteres com 2 casas decimais utilizando o c digo abaixo INDEX ON cust id STR maxordamt 8 2 TAG custmaxord Se voc quer reduzir o tamanho dos ndices para campos com valores inteiros voc pode converter os valores inteiros em uma representa o de um caracter bin rio utilizando a fun o BINTOC Voc pode tamb m converter os valores bin rios em valores inteiros por meio da fun o CTOBIN Se voc deseja criar um ndice para classificar uma tabela em ordem cronol gica poss vel utilizar a fun o DTOS para converter um campo de data em uma sequ ncia de caracteres Para acessar a tabela employee por hire date emp id voc pode criar a express o de chave de ndice a seguir INDEX ON DTOS hire date emp id TAG id hired Incluindo procedimentos armazenados ou fun es definidas pelo usu rio Para aumentar o poder de seu ndice voc pode fazer com que a express o de ndice fa a refer ncia a um procedimento armazenado ou uma fun
22. rio e Digite USE com um nome para o alias da tabela Por exemplo para abrir o arquivo CUSTOMER DBF na rea de trabalho O e atribuir lhe um alias people utilize o comando a seguir SELECT 0 USE customer ALIAS people Voc deve ent o utilizar o alias people para fazer refer ncia tabela aberta Um alias pode consistir em at 254 letras d gitos ou caracteres de sublinhado e deve come ar com uma letra ou caractere de sublinhado O Visual FoxPro criar um alias automaticamente se o alias fornecido contiver um caractere n o permitido em aliases Utilizando aliases atribu dos pelo Visual FoxPro O Visual FoxPro atribui automaticamente um alias para uma tabela em determinadas circunst ncias e Caso voc abra uma mesma tabela em diversas reas de trabalho ao mesmo tempo incluindo a cl usula AGAIN com o comando USE e caso voc n o especifique um alias ao abrir a tabela em cada rea de trabalho e Caso ocorra um conflito com o alias Os aliases padr o atribu dos nas primeiras 10 reas de trabalho s o as letras das reas de trabalho de Aa J os aliases atribu dos nas reas de trabalho de 11 a 32767 s o de W11 a W32767 Voc pode utilizar esses aliases atribu dos pelo Visual FoxPro da mesma forma como qualquer alias padr o ou alias definido pelo usu rio seriam utilizados para fazer refer ncia a uma tabela aberta em uma rea de trabalho Selecionando uma reas de trabalho utilizando um alias Voc
23. s o desconhecidos ou n o est o dispon veis Voc cria ent o um ndice com o n mero de previd ncia social utilizando o exemplo a seguir INDEX ON SocSec LastName FirstName TAG MyIndex Ao visualizar a tabela classificada por este ndice a ordem de classifica o aparecer como na pr xima figura Depois de indexar por SocSec os registros contendo valores de SocSec nulos aparecem primeiro Valores nulos Quando a express o de ndice cont m valores nulos os registros cujos valores de Socsec s o NULL s o classificados primeiro por LastName seguidos pelos registros cujos valores de SocSec n o s o nulos Repare que h duas entradas para Alan Carter Como o registro 5 cont m um valor nulo ele est indexado antes do registro 2 Indexa o utilizando express es complexas Voc tamb m pode criar ndices baseados em express es mais complexas As express es de chave de ndice do Visual FoxPro podem incluir as fun es do Visual FoxPro constantes ou fun es definidas pelo usu rio O resultado da express o criada deve ter menos de 100 caracteres para um ndice independente IDX ou menos de 240 caracteres para uma marca de ndice CDX Para utilizar campos de tipos de dados diferentes juntos em uma nica marca converta os componentes individuais da express o em dados de caractere Para tirar vantagem da otimiza o Rushmore a express o de ndice deve coincidir exatamente com o crit
24. valor padr o as defini es de regras e a legenda do campo tamb m s o removidas Se express es de chave de ndice ou disparador fizerem refer ncia ao campo as express es se tornar o inv lidas quando o campo for removido A express o inv lida de chave de ndice ou disparador n o ir gerar um erro at a hora da execu o Renomeando campos Voc pode renomear campos j existentes na tabela de duas formas k Para renomear um campo de tabela e No Criador de tabelas digite um novo nome para o campo na caixa Nome Ou e Utilize a cl usula RENAME COLUMN do comando ALTER TABLE Por exemplo para renomear a coluna company na tabela customer utilize o comando a seguir ALTER TABLE customer RENAME COLUMN company TO company long new name No exemplo acima o novo nome utiliza o recurso de criar nomes de campo extensos nas tabelas de bancos de dados Definindo ou alterando regras de campos ou tabelas Voc pode definir novas express es e textos de regras de campos ou de tabelas assim como alterar regras e textos definidos com os comandos CREATE TABLE ou ALTER TABLE Para alterar uma regra j existente e No Criador de tabelas selecione a guia Tabela e digite a nova express o ou texto de regra nas caixas Regra e Mensagem na se o Valida o de registros a Ou Es e Utilize o comando ALTER TABLE A fun o DBGETPROP pode ser utilizada para visualizar a express o ou texto de regra atua
25. valores digitados com as express es que voc definiu como regras Se o valor digitado n o atender aos requisitos da regra ele ser rejeitado As regras de valida o somente existem em tabelas de banco de dados As regras de campos e de registros possibilitam que voc controle o tipo de informa o digitado em uma tabela n o importando se os dados s o acessados atrav s de uma janela Pesquisar de um formul rio ou atrav s da linguagem Elas permitem que voc aplique de forma consistente a regra de um campo utilizando menos c digo do que seria necess rio caso voc escrevesse a regra como c digo em uma cl usula VALID em um formul rio ou em uma se o de c digo de um programa Al m disso as regras que voc estabelece para um banco de dados s o aplicadas a todos os usu rios da tabela n o importando quais sejam os requisitos do aplicativo Voc pode tamb m criar ndices candidatos ou prim rios que evitem entradas duplicadas em um campo al m de disparadores para assegurar a integridade referencial ou executar outras a es quando os dados de seu banco de dados forem alterados Quando as restri es s o executadas As restri es do banco de dados s o escolhidas com base no n vel em que voc deseja aplicar uma regra de opera o ou de integridade referencial e tamb m com base na a o que faz com que a restri o seja ativada A tabela a seguir lista as restri es de valida o dos dados na ordem em que
26. 1555 948 Ana Tito mparedados fana Tramo foso 65554729 E La naika annaran bMoctomul eanainna Aana lozgoaa n aaa J que n o h nenhuma necessidade aparente de classificar os contatos por n mero de telefone no aplicativo exemplificado n o ser inserido c digo de SET ORDER no evento Click para o cabe alho da coluna phone Quando o usu rio clicar no cabe alho de coluna Phone a exibi o da grade n o ser alterada Utilizando outros tipos de ndice Al m do ndice mais comum o ndice CDX composto estrutural compacto o Visual FoxPro aceita dois outros tipos de arquivos de ndice o CDX n o estrutural e o ndice IDX independente Os ndices CDX n o estruturais s o utilizados para marcas de chave m ltipla utilizadas com menos frequ ncia Os ndices independentes ou IDX s o utilizados para ndices de chave nica tempor rios ou que sejam raramente utilizados e est o dispon veis basicamente para fins de compatibilidade com vers es anteriores A tabela a seguir um resumo dos tr s tipos de ndice seus nomes o n mero de chaves que podem conter e as limita es no n mero de caracteres de cada um Tipos de ndice do Visual FoxPro Tipo de ndice Descri o N mero de Limites chaves CDX estrutural Utiliza o mesmo Express es Limite de 240 nome do arquivo utilizando caracteres de tabela chaves para a aberto m ltiplas express o automaticamente chamadas de avaliada com a tab
27. A constru o de seu banco de dados envolve a cria o de tabelas Ao projetar o banco de dados voc especificou os campos e relacionamentos necess rios para seu aplicativo Agora medida que as tabelas forem criadas voc far escolhas mais detalhadas quanto aos tipos de dados legendas e prov veis valores padr o para cada campo os disparadores para cada tabela al m dos ndices de tabela que ser o criados para estabelecer os relacionamentos entre tabelas Este cap tulo descreve o processo cria o refinamento e relacionamento de tabelas e ndices durante o desenvolvimento de um aplicativo Ele se concentra basicamente na utiliza o da linguagem para trabalhar com tabelas e registros por m explica tamb m como utilizar a interface para lidar com tarefas comuns Este cap tulo aborda os t picos a seguir e Criando tabelas e Trabalhando com registros e Indexando tabelas e Utilizando v rias tabelas Criando tabelas poss vel criar uma tabela em um banco de dados ou uma tabela livre que n o esteja associada a um banco de dados Se voc colocar a tabela em um banco de dados poss vel criar nomes extensos de tabela e de campos para tabelas de banco de dados Tamb m poss vel utilizar os recursos de dicion rio de dados para tabelas de banco de dados nomes extensos de campos valores padr o de campos regras de campos e registros al m de disparadores Estruturando tabelas de banco de dados ou tabelas livres
28. CDX estrutural e No Criador de tabelas utilize a guia ndice para selecionar e excluir o ndice Ou e Utilize o comando DELETE TAG Ou e Utilize as cl usulas DROP PRIMARY KEY ou DROP UNIQUE TAG do comando ALTER TABLE Por exemplo se a tabela employee contiver uma marca denominada title ser poss vel exclu la utilizando o c digo a seguir USE employee DELETE TAG title Se a marca a ser exclu da fosse a chave prim ria da tabela employee voc poderia utilizar o comando ALTER TABLE USE employee ALTER TABLE DROP PRIMARY KEY Excluindo uma marca de um arquivo CDX n o estrutural Um ndice CDX n o estrutural e suas marcas n o s o vis veis no Criador de tabelas Utilize a linguagem para excluir uma marca de um arquivo CDX n o estrutural k Para excluir um ndice de um arquivo CDX n o estrutural e Utilize a cl usula OF do comando DELETE TAG Utilize a cl usula OF com o comando DELETE TAG para instruir o Visual FoxPro a excluir uma marca de um arquivo CDX que n o seja o CDX estrutural Por exemplo caso haja um arquivo CDX n o estrutural denominado ORTLYRPT CDx com uma marca denominada title a marca title poder ser exclu da com o comando a seguir DELETE TAG title OF qgtrlyrpt Para excluir todas as marcas de um arquivo CDX estrutural ou n o estrutural utilize a cl usula ALL do comando DELETE TAG Excluindo um arquivo de ndice IDX
29. DATE SQL Ao utilizar REPLACE ou UPDATE SQL em um aplicativo multiusu rio voc pode utilizar um buffer de registro ou de tabela que permite a voc editar os dados sem bloquear o registro at que voc queira gravar as altera es fisicamente Para obter maiores informa es sobre a utiliza o de buffers de registro e de tabela consulte o cap tulo 17 Programando para acesso compartilhado Editando registros em uma tabela Voc pode exibir e editar os registros j existentes em uma tabela atrav s da interface ou utilizando a linguagem de programa o k Para exibir os registros para edi o e Utilize o comando EDIT Ou e Utilize o comando CHANGE Por exemplo o c digo abaixo exibe a tabela customer em uma janela Pesquisar no modo de edi o USE customer EDIT Se voc deseja utilizar um formul rio para editar um registro crie uma caixa de texto em seu formul rio e defina a respectiva propriedade DataSource como sendo o nome da tabela que voc deseja editar Para obter maiores informa es sobre formul rios consulte o cap tulo 9 Criando formul rios Voc tamb m pode utilizar os comandos CHANGE e EDIT para alterar campos espec ficos de uma tabela Adicionando gr ficos a uma tabela Para armazenar gr ficos em uma tabela do Visual FoxPro crie um campo do tipo Geral e importe ou cole objetos OLE como bitmaps ou gr ficos no campo O comando APPEND GENERAL coloca um objeto OLE em um campo do
30. LATION para estabelecer relacionamentos m ltiplos entre uma nica tabela pai e diversas tabelas filho Salvando relacionamentos de tabela em um ambiente de dados Ao criar um formul rio que utilize mais de uma tabela voc pode utilizar o ambiente de dados para criar relacionamentos entre tabelas e armazen los com o formul rio Os relacionamentos estabelecidos no Ambiente de dados ser o abertos automaticamente quando voc executar o formul rio Para obter informa es sobre como criar um ambiente de dados consulte o cap tulo 9 Criando formul rios Relacionando registros de uma mesma tabela Voc pode tamb m criar um relacionamento entre registros de uma mesma tabela Esse relacionamento conhecido como rela o de auto refer ncia pode ser til nas situa es em que voc tenha todas as informa es necess rias armazenadas em uma nica tabela Por exemplo voc talvez queira percorrer os gerentes na tabela Employees e fazer com que os funcion rios subordinados a cada gerente sejam automaticamente alterados medida que voc mover o ponteiro de registro de gerente em gerente k Para relacionar de forma tempor ria registros em uma mesma tabela e Na janela Sess es de dados selecione as tabelas e utilize o bot o Rela es para criar relacionamentos Ou e Utilize o comando SET RELATION Para criar uma rela o de auto refer ncia a mesma tabela deve ser aberta duas vezes a primeira em uma rea de trabalho e a s
31. MER CDX para armazenar a nova chave de ndice O arquivo de ndice CDX denominado ndice composto estrutural o tipo mais comum e mais importante de arquivo de ndice que voc criar no Visual FoxPro O arquivo CDX estrutural e aberto automaticamente quando voc abre uma tabela e Pode conter m ltiplos cen rios de ordena o ou chaves de ndice no mesmo arquivo de ndice e mantido automaticamente quando voc adiciona altera ou exclui registros da tabela Se uma tabela do Visual FoxPro possuir algum arquivo de ndice associado a ela geralmente ser um arquivo CDX estrutural O termo estrutural se refere ao fato de que o Visual FoxPro trata o arquivo como uma parte intr nseca da tabela abrindo o automaticamente quando voc utiliza uma tabela Se voc utilizar o Criador de tabelas ou a forma mais simples do comando INDEX conforme mostrado no exemplo anterior o Visual FoxPro criar o arquivo CDX com o mesmo nome da tabela atual e armazenar as informa es de indexa o da nova chave ou marca dentro dele Os arquivos CDX estruturais s o empregados para chaves de ndice frequentemente utilizadas como para ordenar registros para visualiza o di ria entrada de dados cria o de v nculos utilizando SET RELATION otimiza o Rushmore M para visualiza o de registros ou relat rios impressos com frequ ncia O Visual FoxPro possui dois outros tipos de arquivos de ndice o arquivo CDX n o estr
32. a com o comando COPY STRUCTURE 4 Utilize o comando APPEND FROM para copiar os dados da tabela original Copiando e editando estruturas de tabela Para modificar a estrutura de uma tabela existente voc pode utilizar o Criador de tabelas ou ALTER TABLE Como alternativa voc pode criar uma nova tabela com base na estrutura de uma tabela existente e em seguida modificar a estrutura da tabela nova k Para copiar e editar uma estrutura de tabela 1 Abra a tabela original 2 Utilize o comando COPY STRUCTURE EXTENDED para produzir uma nova tabela contendo as informa es estruturais da tabela antiga 3 Edite a nova tabela contendo as informa es estruturais para alterar a estrutura de qualquer tabela nova criada a partir dessas informa es 4 Cria uma nova tabela utilizando o comando CREATE FROM A nova tabela est vazia 5 Utilize APPEND FROM ou um dos comandos de c pia de dados para preencher a tabela se necess rio Criando campos Ao criar os campos da tabela voc determina como os dados s o identificados e armazenados na tabela especificando um nome de campo um tipo de dado e uma largura para o campo Voc pode tamb m controlar que dados s o permitidos no campo especificando se o campo permite valores nulos se possui um valor padr o ou deve atender s regras de valida o A defini o das propriedades de exibi o permite que voc especifique o tipo de controle de formul rio criado quando o campo adicionado
33. a seguir USE products INDEX ON unit price TAG unit price DESCENDING BROWSE Para ler um ndice existente em ordem descendente e Utilize a cl usula DESCENDING do comando SET ORDER para ler um ndice existente em ordem descendente Ler um ndice j existente em ordem descendente permite que voc empregue um ndice j existente em vez de criar um novo Por exemplo talvez j haja um ndice que ordene a tabela product por unit price criado com o c digo a seguir USE products INDEX ON unit price TAG unit price Como padr o a ordem ascendente Voc poderia pesquisar a tabela em ordem descendente com o c digo a seguir USE products SET ORDER TO unit price DESCENDING BROWSE Os exemplos anteriores se concentraram em como acessar as informa es em ordem descendente Tanto SET ORDER quanto INDEX tamb m possuem uma cl usula ASCENDING Voc pode combinar esses dois comandos para ganhar uma enorme flexibilidade em seu aplicativo Por exemplo caso voc utilize a cl usula ASCENDING ou DESCENDING para criar um ndice de acordo com a ordem mais frequentemente utilizada voc pode utilizar a cl usula oposta com o comando SET ORDER para visualizar ou acessar as informa es na ordem inversa quando esta for mais conveniente Filtrando dados Voc pode limitar os registros acessados somente aos dados que voc deseja empregar utilizando um ndice filtrado Ao criar u
34. a tabela pelo novo ndice e depois abre uma janela Pesquisar exibindo os pedidos em ordem de order date USE ORDERS INDEX ON order date TO orddate COMPACT SET ORDER TO orddate BROWSE Voc pode utilizar o comando COPY TAG para gerar um arquivo de ndice independente a partir de uma marca de ndice em um arquivo CDX j existente Por exemplo voc pode descobrir que um dos ndices atualmente mantidos no CDX estrutural somente utilizado para fazer relat rios trimestrais ou anuais O c digo abaixo cria um ndice independente a partir de uma marca birth date natabela employee COPY TAG birth date to birthdt COMPACT Ap s criar um ndice independente a partir de uma marca em um arquivo CDX normalmente a marca do arquivo CDX que agora tornou se desnecess ria deve ser exclu da A pr xima se o explica como excluir um ndice Excluindo um ndice Voc pode excluir ndices que n o est o mais sendo utilizados Para fazer isso exclua a marca dentro do arquivo CDX ou exclua o pr prio arquivo IDX no caso de ndices independentes A exclus o de marcas de ndice melhora o desempenho pois o Visual FoxPro n o precisa atualizar marcas n o utilizadas para refletir as mudan as nos dados de um tabela Excluindo uma marca do arquivo CDX estrutural Voc pode excluir uma marca do arquivo CDX estrutural utilizando o Criador de tabelas ou a linguagem Para excluir uma marca de ndice do
35. a uma tabela aberta em uma rea de trabalho Utilizando sess es de dados Al m das reas de trabalho vis veis na janela Sess o de dados o Visual FoxPro cria automaticamente um ambiente separado para cada inst ncia de um formul rio ou conjunto de formul rios atrav s das sess es de dados Uma sess o de dados uma representa o do atual ambiente din mico de trabalho utilizado por um formul rio conjunto de formul rios ou relat rio Cada sess o de dados cont m seu pr prio conjunto de reas de trabalho Essas reas de trabalho cont m as tabelas abertas nas reas de trabalho seus ndices e relacionamentos Para obter informa es sobre como utilizar sess es de dados consulte o cap tulo 17 Programando para acesso compartilhado Visualizando reas de trabalho Voc pode ver a lista de tabelas aberta em uma sess o do Visual FoxPro abrindo a janela Sess o de dados k Para abrir a janela Sess o de dados e No menu Janela escolha Sess o de dados Ou e Utilize o comando SET Quando voc digitar SET na janela Comando o Visual FoxPro abrir a janela Sess o de dados e exibir os aliases das reas de trabalho para as tabelas abertas na sess o de dados atual Janela Sess o de dados sem nenhuma tabela aberta Sess o de dados JofxI Sess o atual Padr o 1 Biliases Rela es Propriedades Pesquisar Abrir Fechar Rela es x paan E Banco de dados Testdata rea de t
36. abalha com dados em uma janela Pesquisar um formul rio ou outra janela da interface com o usu rio o Visual FoxPro verifica as regras de campos quando voc sai do campo Se o valor de um campo n o tiver sido alterado a regra n o ser verificada Isso significa que voc pode tabular pelos campos sem que o sistema valide os dados Verifica o de regras em n vel de campo M todo de entrada de dados Janela ou comando Verifica o da regra Interface com o usu rio Janela Pesquisar Formul rio Outra janela Quando voc sai do campo se o valor do campo tiver sido mudado Se o valor do campo n o tiver sido alterado a regra n o ser verificada Comandos que n o especificam campos APPEND APPEND GENERAL APPEND MEMO Quando o valor do campo muda na ordem da defini o dos BROWSE campos CHANGE DELETE EDIT GATHER APPEND BLANK Quando o registro INSERT inclu do ou inserido INSERT SQL Comandos que UPDATE Na ordem em que os especificam campos UPDATE SQL campos s o REPLACE especificados no comando Validando valores em n vel de registro As regras de valida o em n vel de registro s o utilizadas para controlar o tipo de informa o que um usu rio pode digitar em um registro As regras de valida o em n vel de registro geralmente comparam os valores de dois ou mais campos no mesmo registro para verificar se eles seguem as regras de opera o estabelecidas para o banco d
37. alizar a mensagem exibida quando a regra violada acrescentando um texto de valida o ao campo O texto que voc digitar ser exibido no lugar da mensagem de erro padr o Para acrescentar uma mensagem de erro personalizada a uma regra em n vel de campo e No Criador de tabelas digite a mensagem de erro desejada na caixa Mensagem na se o Valida o de campo Ou e Utilize a cl usula opcional ERROR com a cl usula CHECK do comando CREATE TABLE ou ALTER TABLE Por exemplo o c digo abaixo acrescenta uma regra de valida o de campo para a tabela orditems exigindo que os n meros digitados na coluna quantity sejam iguais ou maiores que 1 E acrescentada tamb m uma mensagem de erro personalizada ALTER TABLE orditems ALTER COLUMN quantity SET CHECK quantity gt 1 ERROR As quantidades devem ser maiores que ou iguais a 1 Quando o usu rio tentar digitar um valor menor que 1 o Visual FoxPro exibir uma caixa de di logo de erro com a mensagem de erro personalizada que voc definiu rejeitando o valor inv lido Voc pode tamb m utilizar a cl usula SET CHECK do comando ALTER TABLE com a cl usula opcional ERROR para criar uma mensagem de erro personalizada Quando as regras de campos s o verificadas As regras de campos s o verificadas quando o valor do campo muda Ao contr rio dos disparadores essas regras s o ativadas mesmo que um buffer esteja sendo utilizado Quando voc tr
38. ampo a um formul rio o controle no formul rio utilizar a classe especificada como padr o Por exemplo os campos de caractere aparecem automaticamente como controles de caixa de texto quando voc os adiciona a um formul rio Se quiser criar automaticamente um controle de caixa de combina o quando utilizar o campo em um formul rio voc poder definir esta classe como padr o para o campo Voc pode tamb m utilizar as bibliotecas de classe que voc criou k Para definir uma classe padr o e No Criador de tabelas selecione uma classe e uma biblioteca nas caixas Classe padr o e Biblioteca padr o Se verificar que est alterando com frequ ncia a biblioteca e a classe dos seus campos voc poder mapear os tipos de dados dos campos para uma biblioteca e classe na caixa de di logo Op es Para obter maiores informa es sobre como mapear os tipos de dados de campo para classes consulte o cap tulo 3 Configurando o Visual FoxPro no Guia de Instala o e Indice Principal Para obter maiores informa es sobre como criar classes consulte o cap tulo 3 Programa o orientada a objetos neste manual Executando regras de Business Voc pode executar regras de Business para a entrada de dados atrav s da cria o de regras em n vel de campo e de registro denominadas regras de valida o para controlar os dados fornecidos nos campos e registros de tabelas de banco de dados As regras de campos e de registros comparam os
39. andidato como tipo do ndice Ou e Utilize o comando ALTER TABLE Por exemplo ambos os comandos a seguir tornam cust idachave prim ria da tabela customer ALTER TABLE customer ADD PRIMARY KEY cust id TAG cust id ALTER TABLE customer ALTER COLUMN cust id c 5 PRIMARY KEY Os ndices prim rios e candidatos s o armazenados no arquivo CDX estrutural para uma dada tabela assim como no banco de dados com as propriedades Prim rio ou Candidato N o poss vel armazenar estes tipos de ndice em outros arquivos CDX assim como n o poss vel utilizar arquivos IDX para esses tipos de ndice A raz o principal para isso que o arquivo de ndice contendo estes ndices deve sempre ser aberto quando a tabela associada for aberta As chaves prim rias s o parte de uma tabela em um banco de dados Se voc liberar uma tabela de um banco de dados a chave prim ria ser removida Se voc utilizar uma fun o definida pelo usu rio em uma express o de indexa o associada a um banco de dados o Visual FoxPro tratar a express o da mesma forma como trata as express es de regras e disparadores que cont m UDFs Permitindo valores duplicados No Visual FoxPro um ndice nico n o impede que sejam criados valores duplicados Em vez disso um ndice nico armazena somente a primeira ocorr ncia dos valores no arquivo de ndice Neste sentido a palavra nico diz respeito somente
40. aradores para criar integridade referencial O Visual FoxPro fornece um Construtor de integridade referencial para gerar disparadores e procedimentos armazenados que ir o aplicar e manter a Integridade Referencial IR de seu banco de dados Para obter maiores informa es sobre como utilizar o Construtor de integridade referencial consulte o cap tulo 6 Criando bancos de dados Modificando a estrutura da tabela Depois que voc tiver criado uma tabela sempre poss vel modificar a estrutura da tabela e suas propriedades Voc pode querer adicionar alterar ou excluir nomes e larguras de campos tipos de dados alterar valores padr o ou regras ou ainda adicionar coment rios ou legendas Voc abrir o Criador de tabelas para modificar a estrutura de uma tabela ou efetuar as mudan as atrav s da linguagem utilizando o comando ALTER TABLE Certifique se de que voc tem acesso exclusivo tabela antes de modificar sua estrutura k Para modificar a estrutura de uma tabela utilizando o Criador de tabelas e No Gerenciador de projetos selecione o nome da tabela e escolha Modificar Ou e No Criador de bancos de dados selecione a tabela no esquema e escolha Modificar no menu Bancos de dados O e Utilize o comando MODIFY STRUCTURE Por exemplo voc pode modificar a estrutura da tabela de banco de dados employee com os comandos a seguir OPEN DATABASE testdata USE employee EXCLUSIVE MODIFY STRUCTURE Todas as op es
41. campos Memo ou Geral Dica Para n meros de telefone n meros de pe as e outros n meros que voc n o pretende utilizar para c lculos matem ticos selecione o tipo de dados Caractere em vez de Num rico k Para selecionar um tipo de dado para um campo e No Criador de tabelas escolha um tipo de dado na lista Tipo Ou e Utilize o comando CREATE TABLE Por exemplo para criar e abrir a tabela products com tr s campos prod id prod name unit price voc poderia utilizar o comando a seguir CREATE TABLE products prod id C 6 prod name C 40 unit price Y No exemplo acima o Y depois do nome do campo unit price especifica um tipo de dado Moeda Para obter maiores informa es sobre tipos de dados espec ficos consulte Tipos de dados e campo Adicionando um ndice regular rapidamente medida que voc adiciona um campo poder definir rapidamente um ndice regular no campo especificando ascendente ou descendente na coluna ndice do Criador de tabelas O ndice criado automaticamente adicionado guia ndice e utiliza o campo como a express o Para modificar o ndice voc pode alternar para a guia ndice para alterar o nome e o tipo do ndice ou adicionar um filtro Utilizando valores nulos Ao criar uma nova tabela voc pode especificar se um ou mais campos da tabela aceitar o valores nulos Ao utilizar um valor nulo voc est registrando o fato de que uma informa o que
42. cha uma tabela automaticamente ao abrir outra tabela na mesma rea de trabalho ou ao emitir o comando USE com a cl usula IN e fazer refer ncia rea de trabalho atual O c digo abaixo abre exibe e depois fecha a tabela customer emitindo o comando USE IN e o alias de tabela customer USE customer BROWSE USE IN customer N o poss vel haver mais de uma tabela aberta em uma rea de trabalho ao mesmo tempo Referenciando uma rea de trabalho Voc pode fazer refer ncia pr xima rea de trabalho dispon vel antes de abrir uma tabela utilizando o n mero da rea de trabalho conforme mostrado abaixo SELECT O Utilizando aliases de tabela Um alias de tabela o nome que o Visual FoxPro utiliza para fazer refer ncia a uma tabela aberta em uma rea de trabalho O Visual FoxPro utiliza automaticamente o nome do arquivo como alias padr o quando voc abre uma tabela Por exemplo caso voc tenha aberto o arquivo CUSTOMER DBF na rea de trabalho 0 com os comandos abaixo o alias padr o customer ser automaticamente atribu do tabela SELECT 0 USE customer Voc pode ent o utilizar o alias customer para identificar a tabela em um comando ou fun o Voc pode tamb m criar seu pr prio alias Criando aliases definidos pelo usu rio Voc pode atribuir um alias definido pelo usu rio para uma tabela quando esta for aberta k Para abrir uma tabela com um alias definido pelo usu
43. cluir a tabela ao mesmo tempo em que voc a remove do banco de dados Entretanto excluir uma tabela n o o mesmo que remov la de um banco de dados Caso voc queira somente remover uma tabela de um banco de dados mas n o queira exclu la do disco fisicamente consulte Removendo uma tabela de um banco de dados no cap tulo 6 Criando bancos de dados k Para excluir do disco uma tabela de um banco de dados e No Gerenciador de projetos selecione o nome da tabela escolha Remover e depois Excluir Ou e A partir do Criador de bancos de dados selecione a tabela escolha Remover no menu Banco de dados e depois escolha Excluir Ou e Para excluir a tabela e todos os ndices prim rios valores padr o e regras de valida o associados tabela utilize o comando DROP TABLE Ou e Para excluir somente o arquivo de tabela DBF utilize o comando ERASE Cuidado Se voc utilizar o comando ERASE em tabelas associadas a um banco de dados o comando n o atualizar o v nculo retroativo no banco de dados e poder causar erros de acesso tabela Por exemplo o c digo a seguir abre o banco de dados test data e exclui a tabela orditems e seus ndices valores padr o e regras de valida o OPEN DATABASE testdata DROP TABLE orditems Se a tabela for exclu da com a cl usula DELETE do comando REMOVE TABLE o arquivo de memo FPT e o arquivo de ndice estrutural CDX associados tamb m ser o removidos
44. de indexa o do ndice que controla a tabela filho Por exemplo um cliente pode ter muitos pedidos associados a seu registro Caso voc crie um relacionamento entre um campo comum a ambas as tabelas voc pode ver facilmente todos os pedidos de qualquer cliente O programa a seguir utiliza um campo cust id comum s duas tabelas para criar um relacionamento entre o campo cust id na tabela customer e a marca de ndice cust id na tabela orders Utilizando SET RELATION para estabelecer um relacionamento entre duas tabelas C digo Coment rios USE customer IN 1 Abre a tabela customer tabela pai na rea de trabalho 1 USE orders IN 2 Abre a tabela order s tabela filho na rea de trabalho 2 SELECT orders Seleciona a rea de trabalho filho SET ORDER TO TAG cust id Especifica a ordena o da tabela para a tabela filho utilizando a marca de ndice cust id SELECT customer Seleciona a rea de trabalho pai SET RELATION TO cust id Estabelece o relacionamento entre a INTO orders tabela pai e o ndice que controla a tabela filho SELECT orders Abre duas janelas Pesquisar BROWSE NOWAIT repare que mover o ponteiro do SELECT C STOMEE registro na tabela pai muda o BROWSE NOWATT conjunto de dados visualizado na tabela filho A janela Sess o de dados exibir as duas tabelas abertas Orders e Customer bem como o relacionamento estabelecido pelo
45. de mercadorias que um novo cliente pode encomendar at que tenha sido poss vel completar uma verifica o de cr dito e determinar a quantidade de cr dito que dever ser oferecido a esse cliente O exemplo a seguir cria um campo maxordamt com um valor padr o de 1000 CREATE TABLE customer cust id C 6 company C 40 contact C 30 maxordamt Y 4 DEFAULT 1000 Se a tabela customer j possu sse uma coluna maxordamt voc poderia acrescentar um valor padr o para a coluna com este comando ALTER TABLE customer ALTER COLUMN maxordamt SET DEFAULT 1000 Utilizando valores padr o para facilitar a entrada de dados Voc pode utilizar valores padr o para facilitar a entrada de dados para os usu rios de seu aplicativo permitindo que eles ignorem um campo a n o ser que queiram digitar um valor diferente Por exemplo se seu ramo de neg cios lida basicamente com clientes de seu pr prio pa s voc talvez queira que o campo country na tabela customer seja preenchido automaticamente com o nome de seu pa s Caso esteja digitando um registro de cliente referente a um cliente internacional voc poder sobrescrever o nome de seu pa s com o nome do pa s do cliente Dica Caso uma das regras de opera o de seu aplicativo exija que um campo contenha sempre algum valor fornecer um valor padr o ajuda a garantir que as regras de campos ou de registros n o ser o violadas Caso voc remova ou
46. de recuperar os registros caso voc n o tenha emitido um comando PACK ou ZAP que excluem fisicamente os registros da tabela k Para desmarcar um registro marcado para exclus o e Em uma janela Pesquisar clique no marcador de exclus o para desmarcar o registro Ou e No menu Tabela escolha Reintegrar registros Ou e Utilize o comando RECALL Voc pode utilizar o comando RECALL para especificar um intervalo de registros assim como uma condi o baseada em uma express o l gica que os registros devem atender para serem desmarcados para exclus o Por exemplo o c digo abaixo desmarca para exclus o todos os registros de produtos com T no campo discontinu USE products RECALL FOR discontinu T BROWSE Quando voc visualizar a tabela na janela Pesquisar ver que o marcador de exclus o n o est ativado para os registros Removendo registros marcados para exclus o Ap s marcar registros para exclus o voc pode remov los do disco de forma permanente atrav s da interface ou da linguagem k Para remover do disco registros marcados para exclus o e Em uma janela Pesquisar escolha Remover registros exclu dos no menu Tabela Ou e Utilize o comando PACK O comando PACK possui duas cl usulas MEMO e DBF Quando voc emitir PACK sem a cl usula MEMO ou DBF tanto os registros do arquivo da tabela quanto os registros do arquivo de memo associado ser o removidos Por exemplo o c di
47. do DELETE SQL k Para marcar um registro para exclus o e Em uma janela Pesquisar clique sobre o marcador de exclus o para ativar o sinalizador do registro Ou es e No menu Tabela escolha Excluir registros Ou e Utilize o comando DELETE SQL Voc pode utilizar o comando DELETE SQL para especificar um intervalo de registros assim como uma condi o baseada em uma express o l gica que os registros devem atender para serem marcados para exclus o Por exemplo o c digo abaixo marca para exclus o todos os registros de produtos com T no campo Discontinu USE products DELETE FROM products WHERE discontinu T BROWSE Os registros marcados para exclus o somente ser o removidos fisicamente da tabela quando voc emitir um comando PACK Ao visualizar a tabela na janela Pesquisar voc ver que o marcador de exclus o est ativado para todos os registros exclu dos por m o registro ainda estar vis vel na tabela caso SET DELETED esteja desativado OFF Caso SET DELETED esteja ativado ON os registros marcados para exclus o n o ser o exibidos na janela Pesquisar A defini o do comando SET DELETED tamb m determina se os registros marcados para exclus o poder o ser acessados por comandos que operam em registros Recuperando registros marcados para exclus o Voc pode desmarcar registros que foram marcados para exclus o utilizando o comando RECALL Esse comando somente po
48. e dados Por exemplo poss vel utilizar uma regra de valida o de registro para assegurar que o valor de um campo sempre maior do que o de outro no mesmo registro k Para criar uma regra de valida o de registro e uma mensagem de erro personalizada e Na guia Tabela do Criador de tabelas digite a regra e a mensagem de erro desejadas nas caixas Regra e Mensagem Ou e Utilize a cl usula CHECK do comando CREATE TABLE ou ALTER TABLE Por exemplo voc talvez queira assegurar que todos os funcion rios tenham 18 anos ou mais ao serem empregados O c digo a seguir acrescenta uma regra de valida o de registro e um texto de erro para a tabela employee exigindo que a data de contrata o digitada na coluna hire date seja maior do que ou igual data de nascimento mais 18 anos ALTER TABLE employee SET CHECK hire date gt birth date 18 365 25 ERROR Os funcion rios devem ter 18 anos ou mais na data de contrata o Se o usu rio digitar um registro de funcion rio com uma data inv lida o Visual FoxPro exibir uma caixa de di logo de erro com a mensagem de erro personalizada que voc definiu e n o atualizar o registro Voc pode tamb m utilizar a cl usula SET CHECK do comando ALTER TABLE para criar uma regra de valida o de registro Voc deve certificar se de que as regras especificadas para os campos n o entrem em conflito sem ntico com as regras definidas para a tabela O Vi
49. egunda com o comando USE AGAIN outra rea de trabalho Depois voc utiliza um ndice para relacionar os registros Por exemplo o c digo abaixo estabelece e pesquisa um relacionamento de auto refer ncia criando uma marca de ndice denominada mgr ia que ordena a tabela Employee pelo campo reports to ELECT O E employee ALIAS managers LECT 0 E employee AGAIN ALIAS employees DEX ON reports to TAG mgr id T ORDER TO mgr id ELECT managers ET RELATION TO emp id INTO employees ROWSE ELECT employees ROWSE Quando voc mover o ponteiro de registro na janela Pesquisar de managers a janela Pesquisar de employees ser atualizada para mostrar somente os empregados subordinados ao gerente selecionado 92 E WuowbunwunHaunamn Definindo relacionamentos permanentes com ndices Os ndices s o utilizados para estabelecer relacionamentos permanentes entre tabelas de um banco de dados Relacionamentos permanentes s o relacionamentos entre tabelas de bancos de dados que s o armazenados no arquivo de banco de dados e s o automaticamente utilizados como condi es padr o de associa o nos Criadores de consulta e de Visualiza es Relacionamentos permanentes tamb m s o exibidos no Criadores de bancos de Dados como linhas associando ndices de tabelas e como relacionamentos padr o quando as tabelas s o utilizadas no Ambiente de dados Ao contr rio dos relacionamen
50. ela marcas CDX Deve ser aberto Express es Limite de 240 n o estrutural explicitamente o utilizando caracteres nome difere do chaves paraa nome da tabela m ltiplas express o chamadas de avaliada marcas DX Deve ser aberto Express o Limite de 100 independente explicitamente o utilizando chave caracteres nome do arquivo nica para a DX definido express o pelo usu rio avaliada Utilizando ndices CDX n o estruturais Um ndice CDX n o estrutural til quando voc deseja criar v rias marcas de ndice com uma finalidade especial por m n o quer sobrecarregar seu aplicativo com a manuten o regular desses ndices Por exemplo o aplicativo pode conter um conjunto especial de relat rios que analisam os dados com base em campos que normalmente n o est o indexados O programa aplicativo pode criar um ndice CDX n o estrutural com as marcas de ndice necess rias executar os relat rios especiais e depois excluir o arquivo CDX n o estrutural k Para criar uma marca de ndice CDX n o estrutural e Utilize o comando INDEX com as cl usulas TAG e OF A cl usula OF utilizada com o comando INDEX para instruir o Visual FoxPro a armazenar a marca em outro arquivo que n o o arquivo de ndice CDX estrutural da tabela Por exemplo o comando a seguir cria marcas denominadas title ehire date na tabela employee e armazena as em um arquivo CDX n o estrutural denominado ORTLYRPT CDX USE employee INDEX ON title TO
51. ens de acordo com as necessidades de seu aplicativo Voc tem a capacidade de criar relacionamentos personalizados entre tabelas com base nos ndices permitindo que voc acesse somente os registros desejados Um ndice do Visual FoxPro um arquivo contendo ponteiros que s o ordenados de forma l gica de acordo com os valores de uma chave de ndice O arquivo de ndice distinto do arquivo DBF da tabela e n o altera a ordem f sica dos registros na tabela Em vez disso ao criar um ndice voc cria um arquivo que mant m ponteiros para os registros do arquivo DBF Quando deseja trabalhar com os registros da tabela em uma determinada ordem voc escolhe um ndice para controlar a ordem e aumentar a velocidade na qual a tabela visualizada e acessada Criando um ndice Quando voc cria uma tabela o Visual FoxPro cria o arquivo DBF da tabela e caso sua tabela inclua campos do tipo Memo ou Geral o arquivo FPT associado Nenhum arquivo de ndice ser gerado neste momento Os registros digitados na nova tabela ser o armazenados na ordem em que voc os digitar quando voc pesquisar a nova tabela ser o exibidos na ordem em que foram digitados geralmente til visualizar e acessar os registros de uma tabela em uma ordem espec fica Por exemplo voc talvez queira visualizar os registros da tabela de clientes em ordem alfab tica pelo nome da empresa Para controlar a ordem na qual os registros ser o exibidos e ace
52. ere seu ndice n o funcionar Nesse caso poss vel reduzir os nomes no ndice e depois recriar o ndice ou exclu lo e recri lo utilizando nomes de campo reduzidos Para obter informa es sobre como excluir um ndice consulte Excluindo um ndice posteriormente neste cap tulo As regras para criar nomes de campo extensos s o as mesmas utilizadas para criar qualquer identificador do Visual FoxPro exceto pelo fato de que os nomes podem conter at 128 caracteres Para obter maiores informa es sobre como nomear identificadores do Visual FoxPro consulte Criando nomes no Visual FoxPro Selecionando tipos de dados Ao criar um campo da tabela voc tamb m escolhe um tipo de dado para os dados que o campo armazenar Quando escolhe o tipo de dado de um campo voc est decidindo e Que tipos de valores ser o permitidos no campo Por exemplo n o poss vel armazenar texto em um campo Num rico e Quanto espa o de armazenamento o Visual FoxPro dever reservar para os valores armazenados naquele campo Por exemplo qualquer valor com o tipo de dado Moeda utiliza 8 bytes de armazenamento e Que tipos de opera es poder o ser executados sobre os valores daquele campo Por exemplo o Visual FoxPro pode somar valores do tipo Num rico ou Moeda mas n o valores do tipo Caractere ou Geral e Se o Visual FoxPro poder indexar ou classificar os valores no campo Voc n o pode classificar nem criar um ndice para
53. existente Removendo ou excluindo disparadores Voc pode remover um disparador de uma tabela de banco de dados atrav s da interface ou com o comando DELETE TRIGGER k Para excluir um disparador e Na guia Tabela do Criador de tabelas selecione e exclua a express o do disparador na caixa Disparador de inser o Disparador de atualiza o ou Disparador de exclus o Ou e Utilize o comando DELETE TRIGGER O exemplo a seguir remove o Disparador de atualiza o da tabela customer DELETE TRIGGER ON customer FOR UPDATE Caso voc remova ou exclua uma tabela de um banco de dados todos os disparadores vinculados a essa tabela ser o exclu dos do banco de dados Contudo os procedimentos armazenados aos quais feita refer ncia no disparador removido ou exclu do n o ser o exclu dos Modificando disparadores Voc pode modificar disparadores utilizando o Criador de tabelas ou a linguagem k Para modificar um disparador e Na guia Tabela do Criador de tabelas digite a nova express o do disparador na caixa Disparador de inser o Disparador de atualiza o ou Disparador de exclus o Ou e Emita o comando SET SAFETY OFF seguido do comando CREATE TRIGGER Ao modificar um disparador emitindo primeiro o comando SET SAFETY OFF e depois recriando o disparador a antiga express o do disparador ser automaticamente exclu da e substitu da pela express o que foi recriada Utilizando disp
54. go abaixo remove os registros marcados para exclus o USE customer EXCLUSIVE PACK Para excluir somente os registros do arquivo da tabela deixando o arquivo de memo intacto utilize PACK DBF Conservando espa o As informa es contidas nos campos Memo s o armazenadas em um arquivo de memo associado com o mesmo nome da tabela e a extens o FPT Se voc quiser remover o espa o n o utilizado do arquivo de memo mas n o quiser remover da tabela os registros marcados para exclus o emita o comando PACK com a cl usula MEMO Certifique se de que voc tem acesso exclusivo tabela Removendo todos os registros de uma tabela Se voc desejar remover todos os registros de uma tabela deixando somente a estrutura da tabela utilize o comando ZAP Este comando equivale ao comando DELETE ALL seguido por PACK por m ZAP muito mais r pido Certifique se de que voc tem acesso exclusivo tabela Cuidado Os registros removidos da tabela atual com ZAP n o poder o ser reintegrados Indexando tabelas Para navegar visualizar ou manipular registros da tabela em uma determinada ordem voc deve utilizar um ndice O Visual FoxPro utiliza ndices como mecanismos de ordena o para proporcionar flexibilidade e capacidade medida que voc desenvolve seu aplicativo Voc tem a flexibilidade de criar e utilizar diversas chaves de ndice para a mesma tabela permitindo que voc trabalhe com registros em diferentes ord
55. is esses valores s o somente para leitura em se tratando de tabelas e somente podem ser alterados atrav s do comando ALTER TABLE Definindo ou alterando valores padr o Voc pode definir ou alterar valores padr o de campos da tabela depois que a tabela tiver sido constru da Para alterar um valor padr o j existente e No Criador de tabelas digite o novo valor na caixa Valor padr o da guia Campos Ou e Utilize o comando ALTER TABLE A fun o DBGETPROP pode ser utilizada para visualizar o valor padr o atual de um campo esses valores s o somente para leitura em se tratando de tabelas e somente podem ser alterados atrav s do comando ALTER TABLE Trabalhando com registros Ap s ter projetado e criado a estrutura de uma tabela voc pode armazenar dados na tabela acrescentando novos registros Posteriormente voc ir alterar e excluir registros j existentes Cada uma dessas tarefas pode ser executada atrav s da interface ou utilizando comandos Esta se o trata basicamente de como trabalhar com registros utilizando a linguagem de programa o Para obter maiores informa es sobre como trabalhar com registros atrav s da interface consulte o cap tulo 2 Criando tabelas e ndices no Guia do Usu rio Adicionando registros Ao criar uma tabela do Visual FoxPro ela estar aberta por m vazia Caso voc tente armazenar dados em uma tabela sem antes criar um registro na tabela nada acontecer O pri
56. isual FoxPro como condi o de filtro Uma vez que o comando SET FILTER tenha sido emitido somente os registros que satisfizerem a condi o de filtro estar o dispon veis na tabela Todos os comandos que acessam a tabela respeitam a condi o SET FILTER Voc pode definir um filtro separado para todas as tabelas abertas Utilizando ndices de forma eficiente O desempenho das tabelas indexadas pode ser melhorado se os ndices forem sempre atualizados e se forem utilizadas express es otimiz veis nos ndices Reconstruindo um arquivo de ndice ativo Os arquivos de ndice ficam desatualizados quando voc abre uma tabela sem abrir os arquivos de ndice correspondentes e modifica os campos chave da tabela Os arquivos de ndice pode tamb m tornar se inv lidos como resultado de uma falha no sistema ou quando uma tabela for acessada e atualizada utilizando outro programa que n o o Visual FoxPro Quando os arquivos de ndice ficam desatualizados voc pode atualiz los fazendo uma reindexa o com o comando REINDEX Para reconstruir um arquivo de ndice ativo e No menu Tabela escolha Reconstruir ndices Ou e Utilize o comando REINDEX Por exemplo o c digo a seguir atualiza o arquivo de ndice da tabela Customer USE customer REINDEX REINDEX atualiza todos os arquivos de ndice abertos na rea de trabalho O Visual FoxPro reconhece cada tipo de arquivo de ndice arquivos CDX de ndice composto
57. la em um banco de dados o Visual FoxPro armazena os nomes extensos referentes aos campos da tabela em um registro do arquivo DBC Os primeiros 10 caracteres do nome extenso tamb m s o armazenados no arquivo DBF como o nome do campo Se os primeiros 10 caracteres do nome de campo extenso n o forem nicos nesta tabela o Visual FoxPro gerar um nome equivalente aos primeiros n caracteres do nome extenso acrescidos de um n mero sequencial de tal forma que o nome do campo contenha 10 caracteres Por exemplo estes nomes de campo extensos ser o convertidos para os nomes de 10 caracteres a seguir Nome extenso Nome reduzido customer contact name customer c customer contact address customer 2 customer contact city customer 3 customer contact fax customer11 Enquanto uma tabela estiver associada a um banco de dados voc deve utilizar os nomes de campo extensos para fazer refer ncia aos campos da tabela N o poss vel utilizar os nomes de campo de 10 caracteres para fazer refer ncia aos campos de uma tabela em um banco de dados Caso voc remova uma tabela de seu banco de dados os nomes extensos ser o perdidos e voc dever utilizar os nomes de 10 caracteres armazenados no DBF como nomes de campo poss vel utilizar nomes de campo extensos compostos de caracteres n o n meros nos arquivos de ndice Contudo caso voc crie um ndice utilizando nomes extensos e depois remova do banco de dados a tabela qual ele se ref
58. lores padr o de campos empleo Informa es da tabela employee Non extenso da tabela i Arquivo de banco de dados Tabeks do banco de dados Tabehs livres customer dbf postcode dbf maps dbf mydata dbe Informa oes da tabela customer Nonw extenso da tabela Legenda Disparador de exclus o Disparador de insers o Disparador de atualiza o Nomes extensos de campos Valores padr o de campos Informa es da tabela employee Nome extenso da tabela poss vel projetar e criar uma tabela de forma interativa utilizando o Criador de tabelas que pode ser acessado a partir do Gerenciador de projetos ou do menu Arquivo Tamb m poss vel criar uma tabela utilizando a linguagem de programa o Esta se o descreve principalmente como criar uma tabela utilizando a linguagem Para obter informa es sobre como utilizar o Criador de tabelas para criar tabelas de forma interativa consulte o cap tulo 2 Criando tabelas e ndices no Guia do Usu rio emplovee dbf Os comandos a seguir podem ser utilizados para criar e editar uma tabela utilizando a linguagem de programa o Comandos para criar e editar tabelas ALTER TABLE CLOSE TABLES CREATE TABLE DELETE FILE REMOVE TABLE RENAME TABLE DROP TABLE Criando uma tabela de banco de dados Voc pode criar uma nova tabela em um banco de dados utilizando o sistema de menus o Gerenciador de projetos ou a linguagem Ao criar a tabela voc p
59. luna Contact o Visual FoxPro exibir os registros na grade em ordem alfab tica por nome de contato A tabela Customer na grade reordenada em ordem alfab tica por nome de contato Customer Contacts iol xi oompany oonan PostalCode froiephone T Romeroytomio aiejanara Camino 28001 en 745 6201 Morgenstem Gesunarost aiexanderFeuer oarra 0342073176 E ama Trio mparedados fana Tmo foso 6 5554723 radi o Hipermercados fanabeia Domingues 05634030 0555 216 focumettanchonctos fanar Fonseca o4e7e 786 0 555 948 Eastem Connection fanmnDewn wxaeFw 0555029 La maison tasie Jannette Rouet at000 for77er10 Antonio Moreno Taqueria famonioMoreno os023 555 3932 Fami Araua arac osaaz030 1555 985 B oait nai Dana e ia Tagniaisoaskiiciass anana AOT EE AR Se o usu rio clicar no cabe alho da coluna Postal_code a grade ser reordenada e exibida por c digo postal A tabela Customer na grade reordenada pelo c digo postal Customer Contacts Iof x oompany oonan PostalCode reieprone M Hunor owia Nini GrocefPatricia mekenna fooe7sa2 seas aama wolski zaas fztyszexPiosineniewmfniiz ao cazzm ouicksoe morst doss forao7 0372035789 foue Derea Bemardo Batista 02388673 01555 425 Ricardo Adocicados Janete Limeira 02388 890 Jor 555341 Morgenstem Gesunarost areanger Feuer ostra o342073176 CourmetLanchonetes Jandr ronseca oas7e 786 0
60. m ndice filtrado somente os registros que corresponderem express o de filtro estar o dispon veis para exibi o e acesso Para filtrar dados utilizando um ndice filtrado e No Criador de tabelas escolha a guia ndice e digite uma express o de filtro na caixa Filtro para o ndice que voc deseja filtrar Ou e Utilize a cl usula opcional FOR com o comando INDEX Caso voc inclua a cl usula opcional FOR no comando INDEX o arquivo de ndice agir como um filtro na tabela Ser o criadas chaves de ndice no arquivo de ndice somente para os registros que corresponderem express o de filtro Por exemplo caso esteja preparando uma mala direta dirigida aos representantes de vendas de sua empresa e deseje classificar essa correspond ncia por pa s voc poder criar um ndice que filtre a tabela employee de forma que somente os registros de representantes de vendas sejam exibidos ordenados por pa s e sobrenome O c digo a seguir cria um ndice filtrado e exibe os dados filtrados em uma janela Pesquisar USE employee INDEX ON country last name FOR title Sales Representative TAG reps cntry BROWSE Ao visualizar a janela Pesquisar somente os representantes de venda ser o exibidos os registros dos outros funcion rios n o aparecer o na janela Pesquisar Um ndice filtrado cria um ndice somente para os registros que correspondem express o de filtro INDEX 0 N courtry ast name FOR title
61. meiro passo para adicionar registros a uma nova tabela adicionar linhas para armazenar os novos dados Para adicionar registros a uma tabela e Utilize o comando INSERT SQL O comando INSERT SQL pode ser utilizado para inserir valores especificados atrav s do pr prio comando ou para inserir valores de uma matriz ou vari vel de mem ria Por exemplo para inserir um novo registro na tabela customer do banco de dados TasTrade voc emitiria o comando a seguir INSERT INTO customer cust id company contact VALUES SMI007 Smith s Delicatessen Sarah Smith O comando INSERT SQL til para dados remotos j que utiliza uma sintaxe SQL de acordo com a norma ANSI Voc pode tamb m utilizar o comando APPEND BLANK seguido pelo comando REPLACE para adicionar um registro em branco a uma tabela e depois armazenar dados em um campo O comando APPEND BLANK inclui um novo registro em branco em uma tabela O comando REPLACE substitui o valor atual de um campo mesmo que vazio por um novo valor O comando REPLACE requer e Uma tabela aberta e Um registro j existente e O nome do campo no qual o valor deve ser armazenado e Um valor para cada campo que seja v lido para o tipo de dado do campo O exemplo a seguir utiliza o comando APPEND BLANK para criar um registro no qual poss vel armazenar dados utilizando o comando REPLACE APPEND BLANK amp amp o registro foi criado REPLACE lastname WITH SMITH
62. mo NOT NULL possam ser preenchidos com valores padr o antes que a restri o NOT NULL seja aplicada Especificando uma m scara de entrada Ao especificar uma m scara de entrada voc define os atributos de pontua o espa amento e de outros formatos de valores medida que s o digitados no campo Os valores s o armazenados de forma uniforme podendo reduzir erros de entrada de dados e tornar o processamento mais eficiente Por exemplo adicionar uma m scara a um campo num rico que armazena n meros de telefone ajuda o usu rio a preencher rapidamente o campo porque a pontua o e os espa os j s o fornecidos pela m scara Para fornecer uma m scara de entrada e No Criador de tabelas digite a m scara na caixa M scara de entrada na rea Exibir Ou e Utilize a fun o DBSETPROP para definir a propriedade InputMask Por exemplo o c digo a seguir especifica uma m scara de entrada para uma data DBSetProp orders postalcode field InputMask 99999 9999 Controlando a exibi o de um campo As propriedades adicionais para campos permitem que voc controle como um campo e seus valores aparecem em formul rios janelas Pesquisar e relat rios Voc pode especificar um formato de exibi o uma legenda de campo padr o e uma classe padr o e biblioteca de classe Definindo um formato Um formato fornece uma m scara de sa da que determina o modo como o valor de um campo exibido em um formul ri
63. n o digitar um n mero negativo em um campo que deve conter somente valores positivos Tamb m poss vel utilizar uma regra de campo para comparar os valores digitados em um campo com valores existentes em outra tabela Voc n o deve criar regras de campos ou de registros que sejam espec ficas de um aplicativo Utilize as regras de valida o de campos ou de registros para aplicar a integridade de dados e as regras de opera o que sempre se apliquem aos dados em seu banco de dados independente de quem for acessar os dados Por exemplo voc pode criar uma regra que compare a entrada do campo postal code de uma tabela com uma tabela de pesquisa contendo os c digos postais de seu pa s e que rejeite qualquer valor n o existente nesta tabela k Para criar uma regra de campo e No Criador de tabelas digite a express o da regra na caixa Regra da rea Valida o de campo Ou e Utilize a cl usula CHECK do comando CREATE TABLE Ou e Utilize a cl usula SET CHECK do comando ALTER TABLE Por exemplo o c digo abaixo acrescenta uma regra de valida o de campo tabela orditems Essa regra exige que os n meros digitados no campo quantity sejam iguais ou maiores que 1 ALTER TABLE orditems ALTER COLUMN quantity SET CHECK quantity gt 1 Quando o usu rio tentar digitar um valor menor que 1 o Visual FoxPro exibir uma caixa de di logo de erro e o valor ser rejeitado Voc pode person
64. normalmente estaria armazenada em um campo ou registro n o est dispon vel no momento Por exemplo os benef cios de assist ncia m dica ou o valor dos impostos de um funcion rio podem ainda n o ter sido determinados na hora em que um registro preenchido Em vez de armazenar um zero ou um valor em branco que poderiam ser interpretados como tendo algum sentido voc poderia armazenar um valor nulo no campo at que a informa o em quest o estivesse dispon vel k Para controlar a entrada de valores nulos para cada campo e No Criador de tabelas selecione ou limpe a coluna Nulo para o campo Quando a coluna Nulo est selecionada poss vel inserir valores nulos no campo Ou e Utilize as cl usulas NULL e NOT NULL do comando CREATE TABLE Por exemplo o comando a seguir cria e abre uma tabela que n o permite valores nulos nos campos cust ide company mas permite valores nulos no campo contact CREATE TABLE customer cust id C 6 NOT NULL company C 40 NOT NULL contact C 30 NULL Voc pode tamb m controlar se os valores nulos s o permitidos ou n o em campos da tabela utilizando o comando SET NULL ON k Para permitir que valores nulos sejam utilizados em todos os campos da tabela e No Criador de tabelas selecione a coluna Nulo para cada um dos campos da tabela Ou e Utilize o comando SET NULL ON antes de utilizar o comando CREATE TABLE Quando voc emitir o comando SET NULL ON o Visual FoxP
65. o janela Pesquisar ou relat rio Por exemplo k Para fornecer um formato e No Criador de tabelas digite a m scara na caixa Formato na rea Exibir Ou e Utilize a fun o DBSETPROP para definir a propriedade Format Por exemplo o c digo a seguir especifica o formato de exibi o para um c digo postal DBSetProp orders postalcode field Format GR 99999 9999 Criando legendas para os campos Voc pode criar uma legenda para cada campo de uma tabela de banco de dados O Visual FoxPro exibe o texto da legenda de um campo como o cabe alho de coluna em uma janela Pesquisar e como nome padr o de cabe alho em uma grade de formul rio k Para acrescentar uma legenda a um campo em uma tabela de um banco de dados e No Criador de tabelas digite o texto da sua legenda na caixa Legenda da rea Exibir Ou e Utilize a fun o DBSETPROP Por exemplo voc pode querer criar uma legenda para o campo fax em sua tabela supplier digitando Supplier Fax como legenda para o campo DBSETPROP supplier fax field caption Supplier Fax Para obter maiores informa es sobre como utilizar DBSETPROP para definir propriedades de campos de tabela de banco de dados consulte o cap tulo 6 Criando bancos de dados Definindo uma classe padr o Para economizar tempo mais tarde quando estiver criando formul rios voc poder definir uma classe padr o para um campo Depois de definido toda vez que voc adicionar um c
66. o definida pelo usu rio Por exemplo voc pode utilizar um procedimento armazenado ou uma UDF para extrair um nome de rua de um campo que inclua tanto o n mero quanto o nome da rua Se o n mero de rua for sempre num rico o procedimento armazenado ou UDF poder o retornar a parte do campo composta por caracteres e preencher o campo com o n mero de espa os necess rios para criar uma chave de ndice de comprimento constante Essa chave de ndice pode ent o ser utilizada para acessar registros na tabela ordenados pelo nome das ruas Caso sua tabela esteja associada a um banco de dados voc talvez prefira utilizar um procedimento armazenado em vez de uma UDF na marca de ndice Uma vez que as UDFs s o armazenadas em um arquivo separado do banco de dados voc pode mover ou excluir o arquivo da UDF o que faria com que a marca de ndice que fizer refer ncia a essa UDF se tornasse inv lida Por outro lado o c digo dos procedimentos armazenados armazenado no arquivo DBC podendo sempre ser localizado pelo Visual FoxPro Outra vantagem de utilizar um procedimento armazenado em uma marca de ndice que referenciar um procedimento armazenado garante que o ndice ser baseado no c digo especificado Caso voc utilize uma UDF na express o de ndice qualquer UDF que se encontre no escopo no momento da indexa o e tenha o mesmo nome que a UDF referenciada em seu ndice ser utilizada Observa o Fique atento ao fazer refer
67. o utilizando a linguagem os comandos CREATE TABLE ou ALTER TABLE gerar o um erro se os tipos de dados n o forem correspondentes Se a express o for uma fun o definida pelo usu rio UDF ou contiver uma UDF ela n o ser avaliada ao executar CREATE e nenhum erro ser retornado Quando valores padr o s o utilizados Os valores padr o s o avaliados se necess rio e colocados nos campos adequados quando os comandos APPEND APPEND BLANK ou INSERT s o emitidos Quando voc atribui valores com os comandos APPEND FROM ou INSERT SQL o Visual FoxPro atribui valores padr o para todos os campos que n o estiverem explicitamente designados Os comandos APPEND FROM e INSERT SQL tamb m respeitam valores padr o Contudo quando qualquer um desses comandos for emitido os padr es n o ir o sobrescrever valores j existentes nos campos Se os campos inclu dos ou inseridos contiverem valores os valores existentes ser o mantidos quando o registro for inclu do ou inserido e o valor padr o n o ser utilizado Utilizando valores padr o para preencher automaticamente campos N o Nulos Os valores padr o s o particularmente teis para preencher automaticamente campos que n o permitam valores nulos Quando voc adiciona um novo registro os valores padr o s o utilizados primeiro e depois o programa verifica cada campo em ordem de defini o para determinar se falta alguma informa o Isso assegura que os campos designados co
68. ode criar nomes extensos de tabela e de campos valores padr o de campos regras de campos e de registros al m de disparadores k Para criar uma nova tabela de banco de dados e No Gerenciador de projetos selecione um banco de dados depois Tabelas depois Novo para abrir o Criador de tabelas Ou e Utilize o comando CREATE TABLE quando um banco de dados estiver aberto Por exemplo o c digo abaixo cria a tabela smal1tb1 com um coluna denominada name OPEN DATABASE Sales CREATE TABLE smalltbl name c 50 A nova tabela ser associada automaticamente ao banco de dados que estiver aberto quando ela for criada Essa associa o definida por um v nculo retroativo armazenado no registro de cabe alho da tabela Criando uma tabela livre Uma tabela livre uma tabela que n o est associada a um banco de dados As tabelas livres s o teis por exemplo para armazenar informa es de pesquisa compartilhadas por muitos bancos de dados k Para criar uma nova tabela livre e No Gerenciador de projetos selecione Tabelas livres e em seguida Novo para abrir o Criador de tabelas Ou e Utilize a palavra chave FREE com o comando CREATE TABLE Por exemplo o c digo abaixo cria a tabela livre sma11tb1 com uma coluna denominada name CLOSE DATABASES CREATE TABLE smalltbl FREE name c 50 Se nenhum banco de dados estiver aberto no momento em que voc criar a tabela n o ser necess
69. one um registro no lado um ou lado pai de um relacionamento acessando automaticamente os registros relacionados no lado n ou lado filho do relacionamento de tabelas Por exemplo voc pode querer relacionar as tabelas customer e orders de forma que ao mover o ponteiro de registro na tabela customer para um determinado cliente o ponteiro de registro na tabela orders se mova para o registro que possua o mesmo n mero de cliente As reas de trabalho e os aliases de tabela s o utilizados para estabelecer os relacionamentos entre duas tabelas abertas com o comando SET RELATION Caso voc esteja utilizando um formul rio para trabalhar com tabelas voc pode armazenar esses relacionamentos como parte do ambiente de dados do formul rio Relacionando tabelas de forma tempor ria Utilize a janela Sess o de dados ou a linguagem para criar relacionamentos tempor rios entre tabelas k Para criar relacionamentos tempor rios entre tabelas e Na janela Sess o de dados selecione as tabelas e utilize o bot o Rela es para criar relacionamentos Ou e Utilize o comando SET RELATION Utilize o comando SET RELATION para estabelecer um relacionamento entre uma tabela aberta na rea de trabalho atualmente selecionada e outra tabela aberta em outra rea de trabalho Voc normalmente ir relacionar tabelas que t m um campo em comum e a express o utilizada para estabelecer o relacionamento ser geralmente a express o
70. os de ordena o para sua tabela basta criar diversas chaves de ndice para a mesma tabela Isso permite que em momentos distintos voc ordene os registros da tabela de acordo com suas diferentes necessidades k Para criar chaves de ndice adicionais para uma tabela e No Criador de tabelas escolha a guia ndice e digite as informa es relativas s chaves de ndice adicionais Ou e Utilize o comando INDEX Por exemplo o c digo a seguir cria duas novas chaves de ndice na tabela employee uma no campo last name e outra no campo country USE employee INDEX ON last name TAG last name INDEX ON country TAG country Quando voc criar uma marca de ndice sem especificar o nome de um arquivo de ndice a marca ser automaticamente acrescentada ao arquivo de ndice CDX estrutural da tabela O diagrama a seguir mostra um arquivo de ndice CDX com tr s marcas de ndice O ndice CDX cont m diversas marcas representando diversos cen rios de ordena o arquivo CDX Lista de marcas principais BPD Prinario LASTINAME Normal CNTRY LAST Normal Cada lista de chave de ndice armazena uma entrada de registro por tabela acessado por um nome de marca Duas das marcas no diagrama emp ide last name representam ndices baseados em campos individuais O ndice cntry last ordena os registros utilizando uma express o de indexa o simples de dois campos Para obter maiores informa es sobre como const
71. os sobretudo dentro da tabela prim ria ou referenciada para estabelecer a integridade referencial em um relacionamento permanente Voc somente pode criar um nico ndice prim rio para uma tabela O Visual FoxPro retornar um erro caso seja especificado um ndice prim rio em qualquer campo que j contenha dados duplicados Um ndice candidato um ndice que nunca permite valores duplicados nos campos ou express o especificada O nome Candidato se refere ao status do ndice uma vez que os ndices candidatos n o permitem a duplica o de valores s o considerados candidatos para serem selecionados como ndice prim rio de uma tabela Voc pode criar diversos ndices candidatos para uma tabela ndices candidatos s o utilizados tanto como ndice referenciado quanto como ndice de refer ncia em um relacionamento permanente para estabelecer a integridade referencial O Visual FoxPro retornar um erro caso seja especificado um ndice candidato para qualquer campo que j contenha dados duplicados Definindo um ndice prim rio ou candidato Os ndices prim rios e candidatos s o criados com os comandos CREATE TABLE ou ALTER TABLE Voc pode utilizar esses dois tipos de ndice ao definir o lado um de um relacionamento permanente um para n ou um para um Para criar um ndice prim rio ou candidato e No Criador de tabelas escolha a guia ndice e crie um ndice selecionando Prim rio ou C
72. rabalho 1 Registros 15 Abrindo tabelas em reas de trabalho Voc pode abrir uma tabela em uma rea de trabalho utilizando a janela Sess o de dados ou o comando USE Ee Para abrir uma tabela em uma rea de trabalho e Na janela Sess o de dados escolha Abrir Ou e Digite USE na janela Comando Para abrir uma tabela na primeira rea de trabalho dispon vel utilize a cl usula IN do comando USE com uma rea de trabalho 0 Por exemplo se houver tabelas abertas nas reas de trabalho de 1 a 10 o comando a seguir abrir a tabela customer na rea de trabalho 11 USE customer IN O Voc pode tamb m escolher Abrir no menu Arquivo para abrir uma tabela em uma rea de trabalho Fechando tabelas em reas de trabalho Voc pode fechar uma tabela em uma rea de trabalho utilizando a janela Sess o de dados ou a linguagem k Para fechar uma tabela em uma rea de trabalho e Na janela Sess o de dados selecione o alias da tabela e escolha Fechar Ou e Digite USE sem um nome de tabela Ou e Utilize a cl usula IN do comando USE para fazer refer ncia rea de trabalho da tabela que voc deseja fechar Ao emitir o comando USE sem um nome de tabela se houver um arquivo de tabela aberto na rea de trabalho selecionada essa tabela ser fechada Por exemplo o c digo abaixo abre a tabela customer exibe uma janela Pesquisar e depois fecha a tabela USE customer BROWSE USE Voc tamb m fe
73. radores as regras de registros disparam mesmo que os dados estejam no buffer Quando uma regra em n vel de registro dispara durante a execu o de um aplicativo voc precisa incluir c digo de gerenciamento de erros Geralmente isso implica em n o permitir que o aplicativo saia do formul rio ou altere o ambiente ativo de forma mais gen rica at que o usu rio corrija o erro relatado ou cancele a atualiza o Removendo de um banco de dados uma tabela com regras associadas Caso voc remova ou exclua uma tabela de um banco de dados todas as regras de campos e de registros que estejam vinculadas a essa tabela ser o exclu das do banco de dados Isso porque as regras s o armazenadas no arquivo DBC e remover uma tabela de um banco de dados quebra o v nculo entre o arquivo DBF e seu arquivo DBC Contudo os procedimentos armazenados aos quais feita refer ncia nas regras removidas ou exclu das n o s o exclu dos automaticamente j que podem estar sendo utilizados por regras de outras tabelas que permanecem no banco de dados Utilizando disparadores Um disparador uma express o vinculada a uma tabela que chamada quando um dos registros da tabela modificado por um dos comandos especificados de modifica o de dados Os disparadores podem ser utilizados para executar qualquer tipo de opera o paralela de que um aplicativo de banco de dados necessite quando os dados forem modificados Por exemplo poss vel utilizar
74. rar o n mero de Units in stock como Reorder level e receber um aviso caso o item deva ser encomendado Pode ser criado um Disparador de atualiza o na tabela products para este fim Este seria o disparador adequado e n o os de Exclus o ou Inser o porque o disparador deve ser ativado a cada vez que um produto for vendido e o campo Units in stock atualizado a cada vez que um produto vendido para refletir o n mero de itens restantes no estoque Para criar o disparador poss vel especificar updProductsTrigger como Disparador de atualiza o para a tabela products poss vel adicionar um campo tabela denominado reorder amount que armazena o n mero de itens a encomendar em cada pedido de um item e criar uma tabela reorder com os campos a seguir product ide reorder amount E poss vel ent o adicionar o c digo a seguir ao seu procedimento armazenado PROCEDURE updProductsTrigger IF units in stock tunits on order lt reorder level INSERT INTO Reorder VALUES Products product id Products reorder amount ENDIF ENDPROC Voc pode criar disparadores parecidos para um evento de inser o ou exclus o utilizando a cl usula FOR INSERT ou FOR DELETE respectivamente no lugar da cl usula FOR UPDATE Caso voc tente criar um disparador que j exista para um determinado evento e tabela enquanto SET SAFETY estiver ativado ON o Visual FoxPro perguntar se voc quer sobrescrever o disparador
75. rdem dos registros em um formul rio Por exemplo voc talvez queira permitir que os usu rios de seu aplicativo reordenem os registros em uma grade clicando no cabe alho da coluna pela qual eles querem ordenar k Para ordenar por colunas os registros em uma grade 1 Crie um formul rio com um controle Grid 2 Defina a propriedade ColumnCount da grade como o n mero de campos a serem exibidos na grade 3 No evento Click do cabe alho de cada coluna da grade insira um c digo que e Defina a ordem dos registros utilizando uma chave de ndice baseada na coluna e Atualize o formul rio Por exemplo se voc criar um formul rio baseado na tabela Customer do banco de dados Testdata com uma grade contendo as quatro colunas company contact postal code phone a grade estar inicialmente classificada em ordem alfab tica j que os registros dessa tabela foram digitados nessa ordem Tabela Customer em uma grade em ordem alfab tica por nome de empresa Customer Contacts ol xi oompany oonan fPostaicode reieprone medo Futenaste maria angers 12208 030 0074321 E ama Trio Emparsdados fana Trimo foso 6 5554729 amonio moreno Taqueria antonio moreno os023 6 555 3932 Earunatmerom frnomasHary mm IDP an 555778l Bergunas snabekap Cmristina Berguna 595522 0921 12346 Erauer See Delikatessen Hanna moos fessos o621 08460 Eiondeip re etnis Fr d rique citeau ero00 ee601531 B ido Comidas
76. rio utilizar a palavra chave FREE Nomeando uma tabela Ao emitir o comando CREATE TABLE voc especifica o nome de arquivo para o arquivo DBF criado pelo Visual FoxPro para armazenar sua nova tabela Esse nome de arquivo o nome padr o da tabela tanto para tabelas de banco de dados quanto para tabelas livres Os nomes de tabela podem conter letras d gitos ou caracteres de sublinhado e devem come ar com uma letra ou caractere de sublinhado Caso sua tabela esteja em um banco de dados tamb m ser poss vel especificar um nome extenso para a tabela Os nomes de tabela extensos podem conter at 128 caracteres e podem ser utilizados no lugar de nomes de arquivo reduzidos para identificar a tabela no banco de dados O Visual FoxPro exibe os nomes extensos de tabela caso tenham sido definidos sempre que uma tabela exibida na interface por exemplo no Gerenciador de projetos no Criador de bancos de dados no Criador de consultas e no Criador de visualiza es assim como na barra de t tulo de uma janela Pesquisar k Para atribuir um nome extenso a uma tabela e No Criador de tabelas digite um nome extenso na caixa de texto Nome da tabela Ou e Utilize a cl usula NAME do comando CREATE TABLE Por exemplo o c digo abaixo cria a tabela vendint 1 e atribui a ela um nome mais f cil de entender vendors international CREATE TABLE vendint1 NAME vendors international company C 40
77. ro marcar automaticamente a coluna NULO para cada campo da tabela medida que voc adicionar campos no Criador de tabelas Se voc emitir o comando SET NULL antes de emitir CREATE TABLE n o precisar especificar as cl usulas NULL ou NOT NULL Por exemplo o c digo abaixo cria uma tabela que permite valores nulos em todos os campos da tabela SET NULL ON CREATE TABLE test fieldl C 6 field2 C 40 field3 Y A presen a de valores nulos afeta o comportamento das tabelas e ndices Por exemplo se voc utilizar APPEND FROM para copiar registros de uma tabela contendo valores nulos para uma tabela que n o permite valores nulos os campos inclu dos que contiverem valores nulos ser o tratados como em branco vazios ou sendo iguais a zero na segunda tabela Para obter maiores informa es sobre como os valores nulos interagem com os comandos do Visual FoxPro consulte Gerenciando valores nulos Acrescentando coment rios aos campos Depois que voc cria uma tabela em um banco de dados aberto poss vel adicionar uma descri o de cada campo da tabela para que seja mais f cil entender e atualizar as tabelas O Visual FoxPro exibe o texto com coment rios sobre um campo no Gerenciador de projetos quando voc seleciona o campo na lista de campos da tabela k Para acrescentar um coment rio a um campo em uma tabela de banco de dados e No Criador de tabelas digite o texto do coment rio na caixa Coment rio do campo
78. ruir um ndice baseado em mais de um campo consulte Indexando por express es posteriormente neste cap tulo Controlando a ordem na qual os registros s o acessados Ap s criar chaves de ndice para a tabela customer utilizando os campos company city e country voc pode acessar e exibir a tabela utilizando ordens diferentes Basta escolher a chave de ndice preferida Utilize o comando SET ORDER para escolher uma chave de ndice espec fica como chave de ordena o para a tabela Por exemplo o c digo abaixo abre uma janela Pesquisar exibindo os registros da tabela customer por pa s SET ORDER TO country BROWSE Definindo a ordem dos registros em tempo de execu o O comando SET ORDER permite que voc especifique o arquivo ou marca de ndice que estar no controle V rios arquivos de ndice podem estar abertos ao mesmo tempo para somente uma tabela Contudo a ordem na qual os registros ser o exibidos ou acessados ser determinada pelo arquivo de ndice nico IDX o arquivo de ndice de controle ou marca de um arquivo de ndice composto CDX a marca de controle que for definida como ndice de controle Alguns comandos como SEEK utilizam a marca de ndice de controle para procurar registros Voc n o precisa de SET ORDER para executar consultas Definindo a ordem dos registros de forma interativa em um formul rio Voc pode utilizar SET ORDER em tempo de execu o para alterar a o
79. ssados voc deve criar um arquivo de ndice para a tabela criando o primeiro cen rio de ordena o ou chave de ndice para ela Voc pode ent o ordenar a tabela de acordo com a nova chave de ndice e acessar os registros da tabela na ordem nova k Para criar uma chave de ndice para uma tabela e No Criador de tabelas escolha a guia ndice e digite as informa es para uma chave de ndice Escolha Normal para o tipo do ndice Ou e Utilize o comando INDEX Por exemplo o c digo abaixo utiliza a tabela customer e cria uma chave de ndice utilizando o campo city A palavra chave TAG e a palavra city depois dela especificam um nome ou marca para a nova chave de ndice utilizando o campo city USE customer INDEX ON city TAG city No exemplo acima a marca para a chave de ndice utiliza o mesmo nome do campo indexado Os nomes n o precisam ser correspondentes voc poderia ter escolhido outro nome para a chave de ndice Quando voc cria um ndice utilizando o comando INDEX o Visual FoxPro utiliza automaticamente o novo ndice para definir a ordem dos registros na tabela Por exemplo caso voc tenha digitado alguns dados na tabela criada no exemplo acima e depois pesquisado a tabela os registros seriam exibidos em ordem de city Criando um arquivo de ndice Ao criar a primeira chave de ndice para sua tabela no exemplo acima o Visual FoxPro criar automaticamente um novo arquivo CUSTO
80. sual FoxPro n o verifica a consist ncia entre as express es em n vel de campo e de registro Quando as regras de registros s o verificadas As regras de registro assim como as regras de campos s o ativadas quando o valor do registro muda A maneira como voc trabalha com os dados n o importa seja em uma janela Pesquisar em um formul rio em outra janela da interface com o usu rio ou atrav s de comandos que alteram dados o Visual FoxPro verifica as regras de registros quando o ponteiro do registro movido para outro registro Caso nenhum valor tenha sido alterado dentro do registro as regras de registros n o ser o verificadas quando voc mover o ponteiro do registro Voc pode mover se pelos registros sem que o sistema valide os dados Caso voc modifique um registro mas n o mova o ponteiro do registro e depois feche a janela Pesquisar ainda assim a regra ser verificada voc ser avisado sobre eventuais erros e a janela Pesquisar ser fechada Cuidado N o inclua nas regras de valida o comandos ou fun es que tentem mover o ponteiro do registro na rea de trabalho atual ou seja na rea de trabalho cujas regras est o sendo verificadas A inclus o de comandos ou fun es como SEEK LOCATE SKIP APPEND APPEND BLANK INSERT ou AVERAGE COUNT BROWSE e REPLACE FOR em regras de valida o pode fazer com que elas sejam ativadas de forma recursiva gerando uma condi o de erro Ao contr rio dos dispa
81. tipo Geral O exemplo a seguir armazena um arquivo de gr fico do Microsoft Excel localizado no diret rio padr o do Visual FoxPro em um campo do tipo Geral denominado Chart APPEND GENERAL Chart FROM CHART1 CLX CLASS EXCELCHART Para obter maiores informa es sobre como trabalhar com objetos OLE nas tabelas do Visual FoxPro consulte o cap tulo 16 Adicionando OLE Inserindo valores nulos nos campos Voc pode inserir um valor nulo em um campo utilizando a linguagem com NULL ou atrav s da interface utilizando uma combina o de teclas se o campo aceitar valores nulos k Para armazenar um valor nulo em um campo e Em uma janela Pesquisar ou controle de formul rio pressione CTRL 0 zero Ou e Utilize o token NULL Por exemplo o c digo abaixo substitui o valor existente no campo automobile por um valor nulo REPLACE automobile WITH NULL Observa o Utilize o comando SET NULLDISPLAY para especificar o texto exibido para valores nulos Excluindo registros Para excluir registros voc os marca para exclus o e depois remove os registros exclu dos At que voc remova os registros sinalizados para exclus o estes ainda estar o em disco e poder o ser desmarcados e restaurados Esta se o descreve como marcar desmarcar e remover registros de sua tabela Marcando registros para exclus o poss vel marcar registros para exclus o atrav s da interface ou utilizando o coman
82. tos tempor rios definidos com o comando SET RELATION relacionamentos permanentes n o precisam ser recriados a cada vez que voc utilizar as tabelas Contudo uma vez que os relacionamentos permanentes n o controlam os relacionamentos entre ponteiros de registro nas tabelas ser necess rio utilizar tanto relacionamentos tempor rios do tipo SET RELATION quanto relacionamentos permanentes ao desenvolver aplicativos do Visual FoxPro Para obter maiores informa es sobre como definir relacionamentos permanentes consulte o cap tulo 6 Criando bancos de dados
83. utural e o arquivo IDX de chave nica Uma vez que o CDX ndice composto estrutural compacto o tipo de ndice mais importante a maioria dos exemplos desta se o abordar a utiliza o de chaves de ndice nos arquivos CDX para ordenar registros de tabela Os outros dois tipos de arquivo de ndice s o menos utilizados e ser o abordados no final desta se o Visualizando informa es sobre o ndice Voc pode ver quantos registros s o indexados durante o processo de indexa o ativando TALK O intervalo entre registros exibido durante a indexa o pode ser especificado com SET ODOMETER Para obter maiores informa es sobre arquivos de ndice abertos utilize o comando DISPLAY STATUS Esse comando lista os nomes de todos os arquivos de ndice abertos seus tipos estrutural CDX IDX suas express es de indexa o e o nome do arquivo de ndice mestre ou marca mestre O n mero de arquivos de ndice IDX ou CDX que podem ser abertos somente limitado pela mem ria e recursos do sistema Controlando valores duplicados O Visual FoxPro aceita quatro tipos de ndice prim rio candidato nico e normal Esses tipos de ndice determinam se valores duplicados s o ou n o permitidos em campos e registros da tabela Evitando valores duplicados Um ndice prim rio um ndice que nunca permite a exist ncia de valores duplicados nos campos ou na express o especificada Os ndices prim rios s o utilizad
Download Pdf Manuals
Related Search
Related Contents
Libretto di istruzioni installazione Philips 872790025182125 energy-saving lamp IT Istruzioni ed avvertenze per l`installazione e l`uso EN ナイスアップ用キャビネット 30” Freestanding Gas Range SERVICE MANUAL 取扱説明書 (372 KB) Kit de réparation FL100取扱説明書 デジタル入力ユニット:FL100-DT71 -16 SmartPool Inc S411 User's Manual Documentation commerciale Copyright © All rights reserved.
Failed to retrieve file