Chave primaria - campo varchar Bom dia pessoal, Estou com o seguinte cenario: Estou tentando migrar um sistem delphi para o adianti, tenho uma tabela de CFOP onde a chave primaria (CFOP_ID) é varchar(5) esta tabela e relacionada em varias outras atraves desta chave. Tem como resolver isso no adianti? Espero ter sido claro na explanaçao da situaçao, obrigado....
GT
Chave primaria - campo varchar  
Bom dia pessoal,

Estou com o seguinte cenario: Estou tentando migrar um sistem delphi para o adianti, tenho uma tabela de CFOP onde a chave primaria (CFOP_ID) é varchar(5) esta tabela e relacionada em varias outras atraves desta chave. Tem como resolver isso no adianti? Espero ter sido claro na explanaçao da situaçao, obrigado.

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (3)


MG

Sugiro criar o ID sequencial e manter esta chave para que continue os relacionamentos.

Exemplo
iD iNT
CFOP_ID CHAR(5)
.....
GT

Obrigado Marcelo,

A estrutura das tabelas ficou assim:
CREATE TABLE `tipodoc` (
`tipodoc_id` INT(11) NOT NULL,
`tipopagnfe_id` INT(11) NOT NULL DEFAULT 0,
`tipomov_id` VARCHAR(3) NULL DEFAULT NULL COLLATE 'utf8_bin',
`habilitado` VARCHAR(1) NULL DEFAULT 'S' COLLATE 'utf8_bin',
`num_parcelas` INT(11) NULL DEFAULT 1,
`credito_liberado` VARCHAR(1) NOT NULL DEFAULT 'S' COLLATE 'utf8_bin',
`nfce_autorizacao_cartao` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_bin',
`valor_minimo` DECIMAL(18,4) NULL DEFAULT NULL,
PRIMARY KEY (`tipodoc_id`),
INDEX `FK_tipodoc_tipopagnfe` (`tipopagnfe_id`),
INDEX `FK_tipodoc_tipomov` (`tipomov_id`),
CONSTRAINT `FK_tipodoc_tipomov` FOREIGN KEY (`tipomov_id`) REFERENCES `tipomov` (`tipomov_id`),
CONSTRAINT `FK_tipodoc_tipopagnfe` FOREIGN KEY (`tipopagnfe_id`) REFERENCES `tipopagnfe` (`tipopagnfe_id`)
)
COLLATE='utf8_bin'
ENGINE=InnoDB;

CREATE TABLE `tipomov` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`tipomov_id` VARCHAR(3) NOT NULL COLLATE 'utf8_bin',
`descricao` VARCHAR(30) NOT NULL COLLATE 'utf8_bin',
`custodia` VARCHAR(1) NULL DEFAULT 'N' COLLATE 'utf8_bin',
PRIMARY KEY (`id`),
UNIQUE INDEX `tipomov_id` (`tipomov_id`)
)
COLLATE='utf8_bin'
ENGINE=InnoDB
AUTO_INCREMENT=26;


A classe tipodoc ficou assim:
 
  1. <?php
 
  1. <?php
  2. /**
  3. * Tipodoc Active Record
  4. * @author <your-name-here>
  5. */
  6. class Tipodoc extends TRecord
  7. {
  8. const TABLENAME = 'tipodoc';
  9. const PRIMARYKEY= 'tipodoc_id';
  10. const IDPOLICY = 'serial'; // {max, serial}
  11. private $tipopagnfe;
  12. private $tipomov;
  13. /**
  14. * Constructor method
  15. */
  16. public function __construct($id = NULL, $callObjectLoad = TRUE)
  17. {
  18. parent::__construct($id, $callObjectLoad);
  19. parent::addAttribute('descricao');
  20. parent::addAttribute('operacao');
  21. parent::addAttribute('inclui_livro_caixa');
  22. parent::addAttribute('valor_movimentacao');
  23. parent::addAttribute('cheque');
  24. parent::addAttribute('custo_oper_percentual');
  25. parent::addAttribute('custo_oper_valor');
  26. parent::addAttribute('dias_para_credito');
  27. parent::addAttribute('cod_pag_ecf');
  28. parent::addAttribute('tipopagnfe_id');
  29. parent::addAttribute('bandeira_cartao');
  30. parent::addAttribute('vinculado_ecf');
  31. parent::addAttribute('tipomov_id');
  32. parent::addAttribute('habilitado');
  33. parent::addAttribute('conta_id');
  34. parent::addAttribute('ecf_dias_1');
  35. parent::addAttribute('ecf_dias_2');
  36. parent::addAttribute('ecf_dias_3');
  37. parent::addAttribute('ecf_dias_4');
  38. parent::addAttribute('ecf_dias_5');
  39. parent::addAttribute('ecf_dias_6');
  40. parent::addAttribute('ecf_dias_7');
  41. parent::addAttribute('ecf_dias_8');
  42. parent::addAttribute('ecf_dias_9');
  43. parent::addAttribute('num_parcelas');
  44. parent::addAttribute('credito_liberado');
  45. parent::addAttribute('nfce_autorizacao_cartao');
  46. parent::addAttribute('valor_minimo');
  47. }
  48. /**
  49. * Method set_tipopagnfe
  50. * Sample of usage: $tipodoc->tipopagnfe = $object;
  51. * @param $object Instance of Tipopagnfe
  52. */
  53. public function set_tipopagnfe(Tipopagnfe $object)
  54. {
  55. $this->tipopagnfe = $object;
  56. $this->tipopagnfe_id = $object->id;
  57. }
  58. /**
  59. * Method get_tipopagnfe
  60. * Sample of usage: $tipodoc->tipopagnfe->attribute;
  61. * @returns Tipopagnfe instance
  62. */
  63. public function get_tipopagnfe()
  64. {
  65. // loads the associated object
  66. if (empty($this->tipopagnfe))
  67. $this->tipopagnfe = new Tipopagnfe($this->tipopagnfe_id);
  68. // returns the associated object
  69. return $this->tipopagnfe;
  70. }
  71. /**
  72. * Method set_tipomov
  73. * Sample of usage: $tipodoc->tipomov = $object;
  74. * @param $object Instance of Tipomov
  75. */
  76. public function set_tipomov(Tipomov $object)
  77. {
  78. $this->tipomov = $object;
  79. $this->tipomov_id = $object->id;
  80. }
  81. /**
  82. * Method get_tipomov
  83. * Sample of usage: $tipodoc->tipomov->attribute;
  84. * @returns Tipomov instance
  85. */
  86. public function get_tipomov()
  87. {
  88. // loads the associated object
  89. if (empty($this->tipomov))
  90. $this->tipomov = new Tipomov($this->tipomov_id);
  91. // returns the associated object
  92. return $this->tipomov;
  93. }
  94. }
  95. ?>

Aqui funciona:
 
  1. <?php
  2. $col_codpagnfce = new TDataGridColumn('tipopagnfe->descricao','Cod. pag NFCe','left');
  3. ?>

Aqui nao funciona:
 
  1. <?php
  2. $col_tipomovid = new TDataGridColumn('tipomov->descricao','Tipo mov','left');
  3. />
  4. como faço pra pegar tipomov->descricao ?
MG

Pelo que vi na estrutura, em tipomov a chave setia 'tipomov_id"

Tente alterar o seu "set_tipomov"
 
  1. <?php
  2. public function set_tipomov(Tipomov $object)
  3. {
  4. $this->tipomov = $object;
  5. $this->tipomov_id = $object->tipomov_id;;
  6. }
  7. ?>