aferra Posted June 10, 2016 Report Share Posted June 10, 2016 Boa noite, estou com o seguinte problema. inclui um novo registro, e existe um campo que é preenchido posteriormente, ai quando chamo para alterar o registro o campo em questão está como NULL e não consigo edita-lo no get pois uso obejto:campo da própria classe, o que devo fazer para salvar corretamente? ou como em modo de alteração ele ter o espaço correto. type == VARCHAR(20) NULLABLE == YES charset == utf8 agradeço desde já Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted June 11, 2016 Report Share Posted June 11, 2016 Ola Alessandro, vc poderia fazer de duas formas direto no select ifnull(seucampo,space(20)) ou apos extrair sua array do select usar um PADR aEval( aSql , {|_1, _2| aSql[_2,1] := padr( aSql[_2,1],20) ) }) Quote Link to comment Share on other sites More sharing options...
aferra Posted June 13, 2016 Author Report Share Posted June 13, 2016 Valeu Luiz, estou estudando ainda uma forma, mas me veio uma dúvida, o campo estando NULL é menor que com o espaço, correto? isso influencia em desempenho? se sim prefiro então fazer uma função para alteração do que salvar com o espaço "vazio". agradeço desde já Quote Link to comment Share on other sites More sharing options...
Luiz Fernando Posted June 13, 2016 Report Share Posted June 13, 2016 Alessandro acho que a unica coisa gravando espaços seria mesmo o tamanho do banco de dados, qdo ao desempenho acho que não deve influenciar na hora de criar o banco vc pode utilizar assim ::csql+="sseucampo varchar(20) NOT NULL DEFAULT VARCHAR(20) " ou ::csql+=",arq_morto varchar(1) NOT NULL DEFAULT 'N' " tomar cuidado ao gravar um campo utilizando alltrim por exemplo, imagina que este campo tem o tamanho de 40, com o altrrim seu tamanho caiu para 25, ao editar este registro ele vai vir com o tamanho de 25, o usuario não ira conseguir usar as 40 posição. Quote Link to comment Share on other sites More sharing options...
aferra Posted June 13, 2016 Author Report Share Posted June 13, 2016 entendi, vlw Luiz, embora para estudar usei o dbf2sql do Kleyber, irei fazer a minha própria função para conversão e usarei sua lógica, obrigado por enquanto. para os testes fiz desse jeito e funcionou muito bem e resolveu o problema. //Ajustar os campos para edição no GET FUNCTION DolphinField( oTab ) LOCAL aField FOR EACH aField IN oTab:aStructure IF VALTYPE( oTab:FieldGet( aField[ MYSQL_FS_NAME ] ) ) == "C" IF EMPTY( oTab:FieldGet( aField[ MYSQL_FS_NAME ] ) ) HSet( oTab:hRow, "_" + LOWER( aField[ MYSQL_FS_NAME ] ), SPACE( oTab:FieldLen( aField[ MYSQL_FS_NAME ] ) ) ) ENDIF ENDIF NEXT RETURN NIL kapiaba 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.