Descrição
TCAlter [AS] - Altera a estrutura de uma tabela..
|
Sintaxe
| TCAlter( <cNome>, <aEstruturaAtual>, <aEstruturaNova>, <nErro> ) |
Parâmetros
| Par |
Nome |
Tipo |
Descrição |
Default |
Obg |
Ref |
01
|
cNome
|
Caracter
|
Indica o nome da tabela que será alterada
|
|
X |
|
| 02 |
aEstruturaAtual
|
Array
|
Indica o array que contém as informações dos campos atuais da tabela
|
|
X |
|
| 03 |
aEstruturaNova
|
Array
|
Indica o array que contém a nova estrutura desejada para a tabela
|
|
X |
|
| 04 |
nErro
|
Numérico
|
Caso ocorra algum erro na alteração da estrutura, o número do erro do DBAccess será retornado através desta variável
|
|
|
X |
Retorno
| Retorno |
Tipo |
Descrição |
| lRet |
Boolean
|
Após a execução da função TCAlter(), se o retorno for verdadeiro (.T.), a alteração foi realizada com sucesso e <nErro> será 0 (zero).
Caso, o retorno seja falso (.F.), deve-se verificar . Se ainda for nulo (NIL), a instrução de alteração da estrutura não passou pela pré-validação do Protheus, não sendo enviada ao banco. Caso não seja NIL, a instrução foi enviada ao banco de dados, e não obteve sucesso, sendo retornado na propriedade o número da ocorrência do DBAccess relacionada ao erro
|
Exemplo
#INCLUDE "TOTVS.CH"
User Function TCAlter()
Local nPos := 0
Local nErro := 0
Local aAtual := {}
Local aNovo := {}
aAtual := SA1->( dbStruct() )
aNovo := aClone( aAtual )
SA1->( dbCloseArea() )
If ( nPos := aScan( aNovo, { |UA| AllTrim( UA[01] ) == 'A1_NOME' } ) ) > 0
Conout( 'Tamanho Old: ' + cValtoChar( aNovo[nPos,03] ) )//Caracter == 40
aNovo[nPos,03] := 50
VarInfo( 'aNovo', aNovo )
If !TCAlter( RetSQLName('SA1'), aAtual, aNovo, @nErro )
MsgInfo( TCSQLError() + CRLF + 'Numero Erro: ' + Str( nErro ) , "UniversoADVPL" )
Endif
Endif
Return( Nil )
Resultado
Informações adicionais
|
É responsabilidade do programador passar a estrutura atual corretamente. Caso seja passada uma estrutura diferente da atual, pode haver perda de uma ou mais colunas da tabela.
|
|
A função determina internamente as ações a serem tomadas para adequar a estrutura atual para a nova estrutura informada, mantendo os dados na tabela. Nesta operação, dependendo do SGDB em questão, um ou mais índices existentes para a tabela podem ser apagados para que a operação seja completa.
|
|
Ao comparar as estruturas, são determinadas originalmente quatro ações para cada campo da estrutura:
Campo inserido ( existe na nova estrutura, mas não existe na estrutura atual)
Campo eliminado ( existe na estrutura atual, mas não existe na nova estrutura )
Campo mantido ( existe em ambas as estruturas, com os mesmos atributos – tipo e tamanhos )
Campo alterado ( existe em ambas as estruturas, porém com tipo ou tamanho diferentes )
Na mudança de atributos em alteração de campo, a única conversão de tipo suportada é N (numérico) para C (caracter). Caso seja realizada uma conversão de tipo não suportada, todos os dados da coluna em questão serão apagados
|
Gostou? Compartilhe com seus amigos e deixe um comentário! 😎