Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Campo id não existe ou contém valor NULL bom dia! tenho um formulário que busca dados do cadastro de fornecedores de um banco firebird. A tabela TB_FORNECEDORES não tem o campo ID e sim FD_FORNECEDOR. Tem substituir o campo ID do meu Active Record mas o sistema mostra erro dizendo: "Campo id não existe ou contém valor NULL" Como posso resolver esse problema? Obrigado!...
CM
Campo id não existe ou contém valor NULL  
bom dia!
tenho um formulário que busca dados do cadastro de fornecedores de um banco firebird.
A tabela TB_FORNECEDORES não tem o campo ID e sim FD_FORNECEDOR.
Tem substituir o campo ID do meu Active Record mas o sistema mostra erro dizendo: "Campo id não existe ou contém valor NULL"
Como posso resolver esse problema?

Obrigado!

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (9)


MG

No model vc pode mudar isso!
Veja se funciona.

  1. <?php
  2. class Cliente extends TRecord
  3. {
  4.     const TABLENAME 'cliente';
  5.     const PRIMARYKEY'id';   <== mude aqui
  6.     const IDPOLICY =  'max'// {max, serial}
  7.     
  8. ?>
CM

Marcelo, bom dia!
Obrigado pelo retorno!

Foi isso mesmo que fiz, mas erro persiste. Abaixo, o model alterado:

  1. <?php
  2. class TaylorFornecedores extends TRecord
  3. {
  4.     const TABLENAME 'TB_FORNECEDORES';
  5.     const PRIMARYKEY'FD_FORNECEDOR';
  6.     const IDPOLICY =  'max'// {max, serial}
  7.     
  8.     /**
  9.      * Constructor method
  10.      */
  11.     public function __construct($FD_FORNECEDOR NULL)
  12.     {
  13.         parent::__construct($FD_FORNECEDOR);
  14.         parent::addAttribute('FD_FORNECEDOR');
  15.         parent::addAttribute('FD_RAZAO_SOCIAL');
  16.     }
  17. }
CM

bom dia!
alguém passou por esse problema?
Pode me ajudar?

Obrigado!
NR

Essa mensagem é exibida pelo TDatagrid quando você aponta alguma ação para um campo inexistente ou nulo:
  1. <?php
  2. $this->datagrid->addQuickAction('Editar', new TDataGridAction(array('TituloForm''onEdit')), 'id''fa:pencil-square-o blue fa-lg');
  3. // trocar id pelo campo desejado
  4. $this->datagrid->addQuickAction('Editar', new TDataGridAction(array('TituloForm''onEdit')), 'FD_FORNECEDOR''fa:pencil-square-o blue fa-lg');
  5. ?>
CM

Bom dia, Nataniel!
na verdade a chamada do método não parte do TDatagrid, mas de um TButton. Abaixo o código da chamada:
$seek_button=new TButton('find');
$seek_button->setAction(new TAction(array('TaylorFornecedoresSeek','onReload')), 'Busca Fornecedor');
$seek_button->setImage('fa:search');

Abaixo o método onReload da classe TWindow TaylorFornecedoresSeek:
function onReload($param = NULL)
{
try
{
// open a transaction with database 'samples'
TTransaction::open('manix_taylor01');

$repository = new TRepository('TaylorFornecedores');
//$limit = 10;
// creates a criteria
$criteria = new TCriteria;

// default order
if (!isset($param['order']))
{
$param['order'] = 'FD_FORNECEDOR';
$param['direction'] = 'asc';
}

// $criteria->setProperties($param); // order, offset
//$criteria->setProperty('limit', $limit);
if (TSession::getValue('TaylorFornecedoresSeek_fd_fornecedor_filter'))
{
// add the filter stored in the session to the criteria
$criteria->add(TSession::getValue('TaylorFornecedoresSeek_fd_fornecedor_filter'));
}
if (TSession::getValue('TaylorFornecedoresSeek_fd_razao_social_filter'))
{
// add the filter stored in the session to the criteria
$criteria->add(TSession::getValue('TaylorFornecedoresSeek_fd_razao_social_filter'));
}

// load the objects according to the criteria
$fornecedores = $repository->load($criteria);
$this->datagrid->clear();
if ($fornecedores)
{
foreach ($fornecedores as $fornecedor)
{
// add the object inside the datagrid
$this->datagrid->addItem($fornecedor);
}
}


// reset the criteria for record count
$criteria->resetProperties();
$count= $repository->count($criteria);

$this->pageNavigation->setCount($count); // count of records
$this->pageNavigation->setProperties($param); // order, page
$this->pageNavigation->setLimit($limit); // limit

// close the transaction
TTransaction::close();
$this->loaded = true;
}
catch (Exception $e) // in case of exception
{
// shows the exception error message
new TMessage('error', $e->getMessage());
// undo all pending operations
TTransaction::rollback();
}
}

A tabela que tento buscar os dados não tem o campo ID, mas ID_FORNECEDOR.

CM

bom dia!
consegui resolver.

Obrigado!
MG

Celio
Excelente.
Por favor, poderia compartilhar a solução, pois assim se houver outro colega com o mesmo problema, possa ser útil.
Sucesso!
WM

Estou com o mesmo problema, Celio Morais você pode postar a solução?
GE

Solução: O método que funcionou na minha aplicação foi tirar os espaços que vem no resultado do select do banco de dados.
No meu caso utilizei rtrim nativo do php.

$item->id = rtrim($row['Id']);

Abraço!