Ajude o site desativando o bloqueador de anúncio
Cabeçalho

TCAlter [AS]

Autor: Eurai Criado: 01/01/2016 Atualizado: 25/04/2025 Acesso a Dados
Postagem

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
tcalter_-_resultado_01                                       

 

 

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! 😎  

 

 

 

 

 

 

 

ASSINE A NEWSLETTER

Cadastrando...

PIX uDesenv

PIX QR Code para depósito

Clique para doar

Parceiros

Tudo em ADVPL - Blog parceiro

Blog ADVPL