RS
ajuda com campo TDBMultiSearch
estou tentando preencher um campo TDBMultiSearch com dados de uma tabela, mas não estou conseguindo, me parece que este campo é array
- <?php
- $obj = new stdClass;
- $obj->id_logradouro = [$endereco->id => $endereco->nome];
- TForm::sendData('form_search_ControleKm', $obj);
- ?>
Criação do campo no form.
$id_exame_complementar = new TDBMultiSearch('id_exame_complementar', 'rms', 'Tbexames', 'id', 'exame');
public function onSave( $param )
{
try
{
TTransaction::open('rms'); // open a transaction
$this->form->validate(); // validate form data
$data = $this->form->getData(); // get form data as array
$object = new Tbatendimentos; // create an empty object
$object->fromArray( (array) $data); // load the object with data
//salva no TDBMultisearch (INICIO)
$campo = '';
foreach($data->id_exame_complementar as $key => $item) {
$campo .= $item . ',';
}
$object->id_exame_complementar = $campo;
//salva no TDBMultisearch (FIM)
$object->store(); // save the object
// get the generated id
$data->id = $object->id;
.........
public function onEdit( $param )
{
try
{
if (isset($param['key']))
{
$key = $param['key']; // get the parameter $key
TTransaction::open('rms'); // open a transaction
$object = new Tbatendimentos($key); // instantiates the Active Record
//TDBMultiSearch
$object->id_exame_complementar = explode(",", $object->id_exame_complementar);
$this->form->setData($object); // fill the form
TTransaction::close(); // close the transaction
}
else
{
$this->form->clear(TRUE);
}
}
catch (Exception $e) // in case of exception
{
new TMessage('error', $e->getMessage()); // shows the exception error message
TTransaction::rollback(); // undo all pending operations
}
}
bom dia Cesar Novaes isso ja estou fazendo e tudo certo, para salvar e pegar para editar, o problema que estou usando um setExitAction e quando sair deste campo jogar valor neste
TDBMultiSearch
Olá Robson,
tente substituir a linha:
por:
deu não, ainda ficou em branco.
Veja no tutor o uso do componente MultiSearch: localhost/tutor/index.php?class=FormEventsView
De repente, pode se aplicar ao seu caso!
tem não, só queria ao selecionar o Local no onChangeAction, pegar o id do logradouro que tem no local e jogar ele no TDBMultiSearch que é o id_logradouro
pelo jeito não tem jeito, mas obrigado pela ajuda, infelizmente.
Robson Sorrilha. Não desista! Aguarde até o final da tarde!
Veja se o relato a seguir, é similar ao seu caso:
Eu tenho:
- tabela de estados (id, nome, sigla);
- tabela de municipios (id, nome, uf_pk);
- tabela de funcionario (.... municipio_pk...)
Sequencia;
1-> cadastrei os estados;
2-> os municípios e, aí, setei por meio do campo uf_pk o estado (RJ, SP etc) ;
3-> e quando vou cadastrar o funcionário, seleciono o município e aqui é legal:
no form cadastro de funcionário, usei o componente TDBUniqueSearch
$municipio_pk = new TDBUniqueSearch('municipio_pk', 'conn', 'Tbmunicipios', 'ibge', 'municipio');
//definir suas propriedades:
$municipio_pk->setMinLength(1);
$municipio_pk->setMask('{municipio} --- ( {tbestados->sigla} )');
$municipio_pk->setOperator('like');
//execução
Quando digito no campo, ele faz a busca do município e mostra da seguinte forma: SALVADOR --- ( BA )
Isso só é possível porque os cadastros e relacionamento já foram feitos antes de cadastrar o município onde o funcionário reside!
Robson,
Você conseguiu solução para o seu caso ? Eu estou com o mesmo prodblema.
Se você puder ajudar eu agradeço.
A pista que eu achei é que parece que o componente TDBMultiSearch não atualiza dentro de uma static function.
Marcelo Lopes