PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 24 → WX - Filemanager da Pcsoft, sim existe! Os Wx fazem o upgrade das versões das tabelas, saiba como
WX - Filemanager da Pcsoft, sim existe! Os Wx fazem o upgrade das versões das tabelas, saiba como
Iniciado por adrianoboller, jun., 01 2016 9:44 PM - 5 respostas
Membro registado
2.949 mensagems
Popularité : +89 (91 votes)
Publicado em junho, 01 2016 - 9:44 PM
Prezados,

Aos vindos do Clarion para o Windev, esse post é bem esclarecedor so essa questão.

Sim, existe o Filemanager da Pcsoft, o Windev e o Webdev (ainda não está disponível para o Windev Mobile), possuem esse recurso nativo, que permite fazer o upgrade das versões das tabelas do banco de dados. Ou seja, caso você já tenha colocado em produção o seu sistema basta colocar no global do projeto esse comando aqui:

HModifyStructure("*", hmsBackgroundTask)


Obs.: vai alterar a estrutura da base em uma tarefa em background sem o usuário perceber

No Clarion tinha que instalar o template da Capesoft e trocar a versão manualmente da tabela e configurar todos os módulos e globais para que funcionasse sem nenhum problema.

Aqui no Windev apenas uma linha resolve esse problema, simplificando em muito a vida do desenvolvedor.

Cuidados que devem ser tomados:
A) Sempre criar na ultima coluna o novo campo
B) Testar antes no ambiente de teste antes de colocar no cliente
C) No cliente, fazer um backup antes de colocar a versão nova.


Permite atualizar a estrutura de um arquivo de dados HFSQL realizando uma modificação automática de dados (também chamado de sincronização da Estrutura de Dados Implantado).

Nota: A partir da versão 19, HFSQL é o novo nome da HyperFileSQL.

Novo na versão 21
WINDEVWINDEV móvelUniversal Windows 10 App Esta função está agora disponível em Universal Windows 10 modo de App.
Exemplo
// Atualiza a estrutura do arquivo do cliente no fundo tarefa
HModifyStructure ( Cliente , hmsBackgroundTask )


Sintaxe
<Result> = HModifyStructure (<Nome lógico do arquivo de dados> [, <Option> [, <Nova senha> [, <Backup> [, <Progress Bar>]]]])

<Resultado>: booleana

Verdadeiro se a modificação automática de dados foi realizada,
Falso contrário. ErrorInfo e HErrorInfo são usados ​​para identificar o erro.

<Nome lógico do arquivo de dados>: Sequência de caracteres (com ou sem aspas)

Nome do ficheiro de dados (definido na análise) cuja estrutura tem de ser actualizada.
Se este parâmetro é igual a "*", a modificação automática de dados será aplicada a todos os ficheiros de dados conhecidos (descritas na análise).
Este parâmetro pode também correspondem ao nome de um grupo de arquivos de dados (ou custom-pasta) definidas na análise.

<Opção>: constante opcional (ou a combinação de constantes)

Opções para a modificação automática de dados:

hmsNormal
(Valor padrão) modo de operação padrão da modificação automática de dados.
hmsNoCheck A modificação automática de dados é realizada mesmo se:

a descrição do arquivo é mais recente do que a descrição da análise,
o GUID do arquivo difere do GUID da análise.

hmsBackgroundTask A modificação automática quente é realizada (disponível apenas para os arquivos de dados de cliente / servidor HFSQL).

Universal Windows 10 App Esta constante não está disponível.

Nota : Em hmsNormal ou hmsNoCheck modo, o arquivo de dados usado não deve ser aberta (através da aplicação ou por outro aplicativo).

<Nova senha>: cadeia de caracteres opcional (com aspas)

Nova senha do arquivo de dados.
cadeia vazia ( "") para apagar a senha.

Se este parâmetro não for especificado (ou se este parâmetro corresponde a NULL), a senha existente não é modificado.

<Backup>: cadeia de caracteres opcional (com aspas)

diretório de backup.
cadeia vazia ( "") para executar nenhum backup (valor padrão).

<Progress Bar>: cadeia de caracteres opcional (com ou sem aspas)

Nome do controle de barra de progresso ou nome da janela utilizada para mostrar o progresso da modificação automática de dados.

Observações
a) Universal Windows 10 App Android Widget iPhone / iPad Java Este parâmetro não está disponível.

Senha
b) Se HModifyStructure é a primeira função que manipula o arquivo de dados especificado, a senha é verificada quando se utiliza o arquivo de dados. Esta senha deve ter sido especificado por HPass . Se a senha está incorreta, HErrorPassword retorna Verdadeiro e HModifyStructure retorna False .

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
172 mensagems
Publicado em junho, 02 2016 - 1:06 PM
Um dúvida Adriano.

Sempre que criar um novo campo devo deixá-lo no final da tabela "A) Sempre criar na ultima coluna o novo campo"? Por que isso?

Uma coisa que notei é que quando crio um campo novo, mesmo que no analysis eu posicione o mesmo no início da tabela, no HFSQL sempre fica no final, veja o exemplo nas imagens, eu crie o campo Uf na tabela de cliente, no Analysis eu coloquei o campo abaixo do campo Codigo_da_cidade, mas no HSQL o campo UF ficou no final da tabela depois do campo Codigo_do_fornecedor.











--
André Martini
IS2 Automotive http://www.is2.inf.br/is2automotive/index.html
IS2 Construtive http://www.is2.inf.br/is2construtive/index.html
IS2 Store http://www.is2.inf.br/is2store/index.html
IS2 Gerent http://www.is2.inf.br/is2gerent/index.html
Membro registado
2.949 mensagems
Popularité : +89 (91 votes)
Publicado em junho, 02 2016 - 2:34 PM
Prezado André

Por segurança e integridade dos dados sempre vai para o final, nunca desloque colunas.

Inclusive no SQL, faça sempre um bom estudo de caso antes de montar o seu script ou a sua table.

Isso é regra.

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
2.949 mensagems
Popularité : +89 (91 votes)
Publicado em julho, 21 2016 - 4:00 PM
EXEMPLO TESTE

MODIFICAR

// Premier lancement ?
SI ChargeParamètre(PremierLancementEnumération,Vrai) = Faux ALORS
Info("La mise à jour de la structure du fichier de données a déjà été réalisée.")
RETOUR
FIN

// On modifie la structure du fichier de données
SI HModifieStructure(Commande,hmsNormal) =Faux ALORS
// Echec de la modification, on affiche une erreur
Erreur(errComplet)
FinProgramme()
FIN

// On enregistre le fait que la modification des fichiers a été effectuée avec succès
SauveParamètre(PremierLancementEnumération,Faux)

BTN_CopierDonnées..Grisé = Faux

Info("Modification de la structure du fichier de données réalisée avec succès")





USAR

// Copie des données déjà effectuées ?
SI ChargeParamètre(PremièreCopieRubriqueEnumeration,Vrai) = Faux ALORS
Info("La copie des données a déjà été effectuée")
RETOUR
FIN

// On parcourt tout le fichier de données
POUR TOUT Commande
// Pour chaque taches, on modifie la rubrique énumération
// Premier paramètre : nom de l'énumération
// ici il s'agit de celui décrit dans l'analyse étant donné que l'on ne déclare plus l'énumération dans le code
// Deuxième paramètre : Valeur de l’énumération, il s'agit de notre ancienne rubrique
Commande.Enum_EtatCommande = EnumérationDepuisValeur(EEtatCommande,Commande.EtatCommande)

// On modifie l’enregistrement
SI HModifie(Commande) =Faux ALORS
Erreur(errComplet)
RETOUR
FIN
FIN

// On enregistre le fait que la modification des fichiers a été effectuée avec succès
SauveParamètre(PremièreCopieRubriqueEnumeration,Faux)


Info("Copie des données réalisée avec succès")





REINICIALIZAR

Info("L'application va simuler le premier lancement de l'application en remplaçant les fichiers de données par d'anciens fichiers de données.")

// On indique le prochain go sera le premier lancement de l'application
SauveParamètre(PremierLancementEnumération,Vrai)
SauveParamètre(PremièreCopieRubriqueEnumeration,Vrai)

// On supprime le fichier de données à jour (celui avec la rubrique de type énumération)
fSupprime(fRepExe()+[fSep]+"Commande.fic")
fSupprime(fRepExe()+[fSep]+"Commande.ndx")

// On copie l'ancienne version du fichier de données (celui pas à jour, sans la rubrique de type énumération)
fCopieFichier(fRepExe()+[fSep]+"Fichier N-1\Commande.fic",fRepExe()+[fSep]+"Commande.fic")
fCopieFichier(fRepExe()+[fSep]+"Fichier N-1\Commande.ndx",fRepExe()+[fSep]+"Commande.ndx")

BTN_CopierDonnées..Grisé = Vrai


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
2.949 mensagems
Popularité : +89 (91 votes)
Publicado em outubro, 25 2016 - 12:58 PM
Se não existe as tabelas crie

// Create all the data files described in the analysis
// with the "PSW" password
HCreationIfNotFound("*", "PSW")


// Create the Orders file (described in the analysis)
HCreationIfNotFound(Orders)


Veja esses outros temas correlacionados

HChangeName (Function)
HChangeDir (Function)
HSubstDir (Function)
HPass (Function)
HOpen (Function)
HCreation (Function)
Functions for managing HFSQL

http://help.windev.com/en-US/search2.awp…

http://help.windev.com/en-US/…

Bons estudos!

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
2.949 mensagems
Popularité : +89 (91 votes)
Publicado em agosto, 12 2017 - 3:36 PM
HCreationIfNotFound("*","SenhaSecretaEscrevaAquiOuUseUmaVariavel")

HModifyStructure("*",hmsBackgroundTask)

HCheckStructure("*",hCompatible)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, agosto, 12 2017 - 3:36 PM