Clipper On Line • Ver Tópico - Ler field boolean pela Query MySQL muda na versão HMG 3.3.0

Ler field boolean pela Query MySQL muda na versão HMG 3.3.0

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Ler field boolean pela Query MySQL muda na versão HMG 3.3.0

Mensagempor NiltonGM » 16 Jun 2014 16:51

Olá amigos,

Só para deixar registrado, eu tenho uma Query que lê campos boolean "TINYINT(1)" de uma tabela em MySQL usando as funções:
oQuery := oServer:Query("SELECT * FROM usuarios INNER JOIN permissoes ON usuarios.perm_id = permissoes.perm_id WHERE user_ativo = 1 AND user_login='" + Login.tb_Usuario.Value + "' AND user_senha = '" + Login.tb_Senha.Value + "'")
... comandos...
oRow := oQuery:GetRow(1) // Pego a primeira e unica linha se não retornou vazio é claro
// Habilito ou desabilito o item do menu do formulário principal conforme o previlégio/permissão do usuário logado
Linha 67 do programa:
Main.mp_CTe.Enabled := oRow:FieldGet( oRow:FieldPos('perm_menu_CTe')) // A FieldPos() retorna a posição numérica da coluna (campo) para o FieldGet() que por sua vez retorna o conteúdo da coluna/campo.
... repito isso para cada menu do formulário principal
A função FieldGet() na versão IDE HMG 3.0.35 convertia o campo Tinyint valor 1 para .T. e 0 para .F., então o comando funcionava.
Ao compilar com a versão IDE HMG 3.3.0 64-bits com a compilação habilitada para gerar aplicação em 32-bits a alinha 67 da erro de execução pois a função FieldGet não retorna mais .T. ou .F. e sim o número literal 0 ou 1.
Então mudei a linha de comando para:
Main.mp_CTe.Enabled := ( oRow:FieldGet( oRow:FieldPos('perm_menu_CTe')) > 0 )

Resolvido.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 25 vezes

Ler field boolean pela Query MySQL muda na versão HMG 3.3.0

Mensagempor NiltonGM » 30 Jun 2014 13:41

Descobri que a função/Metodo FieldGet(ncField) diferente do Clipper, aceita tanto cField como nField, dispensando a função FieldPos(cField), então a função acima oRow:FieldGet( oRow:FieldPos('perm_menu_CTe')) ficou assim:
oRow:FieldGet('perm_menu_CTe').
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 25 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Google Adsense [Bot] e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro