EL
Trabalhar com data no Oracle
Fechado
Boa tarde,
Pessoal criei uma variável NLS_LANG e apliquei o mesmo tipo que encontro no banco: AMERICAN_AMERICA.AL32UTF8.
Desta maneira não tenho problemas na visualização de datas e também de acentos.
Porem ao tentar realizar um insert tenho a mensagem de erro em anexo, eu utilizei o código padrão do Studio Professional do form de cadastro como descrito abaixo:
Pessoal criei uma variável NLS_LANG e apliquei o mesmo tipo que encontro no banco: AMERICAN_AMERICA.AL32UTF8.
Desta maneira não tenho problemas na visualização de datas e também de acentos.
Porem ao tentar realizar um insert tenho a mensagem de erro em anexo, eu utilizei o código padrão do Studio Professional do form de cadastro como descrito abaixo:
- <?php
- /**
- * SacPesquisaForm Registration
- * @author <your name here>
- */
- class Pesquisa extends TPage
- {
- protected $form; // form
-
- use Adianti\\Base\\AdiantiStandardFormTrait; // Standard form methods
-
- /**
- * Class constructor
- * Creates the page and the registration form
- */
- function __construct()
- {
- parent::__construct();
-
- $this->setDatabase('dbprod'); // defines the database
- $this->setActiveRecord('SacPesquisa'); // defines the active record
-
- // creates the form
- $this->form = new TQuickForm('form_SacPesquisa');
- $this->form->class = 'tform'; // change CSS class
-
- $this->form->style = 'display: table;width:100%'; // change style
-
- // define the form title
- $this->form->setFormTitle('SacPesquisa');
-
- // create the form fields
- //$NR_SEQUENCIA = new TEntry('NR_SEQUENCIA');
- $NR_SEQ_APRES = new TEntry('NR_SEQ_APRES');
- $DT_AVALIACAO = new TEntry('DT_AVALIACAO');
- $DT_ATUALIZACAO = new TEntry('DT_ATUALIZACAO');
- $NM_USUARIO = new TEntry('NM_USUARIO');
- $CD_PESSOA_FISICA = new TEntry('CD_PESSOA_FISICA');
- $NR_SEQ_TIPO_AVALIACAO = new TEntry('NR_SEQ_TIPO_AVALIACAO');
- $DS_OBSERVACAO = new TEntry('DS_OBSERVACAO');
- $CD_ESTABELECIMENTO = new TEntry('CD_ESTABELECIMENTO');
- $DT_LIBERACAO = new TEntry('DT_LIBERACAO');
- $CD_SETOR_ATENDIMENTO = new TEntry('CD_SETOR_ATENDIMENTO');
- $NR_SEQ_CICLO = new TEntry('NR_SEQ_CICLO');
- $DT_CANCELAMENTO = new TEntry('DT_CANCELAMENTO');
- $NM_USUARIO_CANCELAMENTO = new TEntry('NM_USUARIO_CANCELAMENTO');
- $CD_PERFIL = new TEntry('CD_PERFIL');
- $NR_SEQ_BO = new TEntry('NR_SEQ_BO');
- $CD_CONVENIO = new TEntry('CD_CONVENIO');
- // add the fields
- //$this->form->addQuickField('Nr Sequencia', $NR_SEQUENCIA, 200 );
- $this->form->addQuickField('Seq. Apres.', $NR_SEQ_APRES, 200 );
- $this->form->addQuickField('Dt Avaliacao', $DT_AVALIACAO, 200 );
- $this->form->addQuickField('Dt Atualizacao', $DT_ATUALIZACAO, 200 );
- $this->form->addQuickField('Nm Usuario', $NM_USUARIO, 200 );
- $this->form->addQuickField('Cd Pessoa Fisica', $CD_PESSOA_FISICA, 200 );
- $this->form->addQuickField('Nr Seq Tipo Avaliacao', $NR_SEQ_TIPO_AVALIACAO, 200 );
- $this->form->addQuickField('Ds Observacao', $DS_OBSERVACAO, 200 );
- $this->form->addQuickField('Cd Estabelecimento', $CD_ESTABELECIMENTO, 200 );
- $this->form->addQuickField('Dt Liberacao', $DT_LIBERACAO, 200 );
- $this->form->addQuickField('Cd Setor Atendimento', $CD_SETOR_ATENDIMENTO, 200 );
- $this->form->addQuickField('Nr Seq Ciclo', $NR_SEQ_CICLO, 200 );
- $this->form->addQuickField('Dt Cancelamento', $DT_CANCELAMENTO, 200 );
- $this->form->addQuickField('Nm Usuario Cancelamento', $NM_USUARIO_CANCELAMENTO, 200 );
- $this->form->addQuickField('Cd Perfil', $CD_PERFIL, 200 );
- $this->form->addQuickField('Nr Seq Bo', $NR_SEQ_BO, 200 );
- $this->form->addQuickField('Cd Convenio', $CD_CONVENIO, 200 );
-
- if (!empty($DT_AVALIACAO))
- {
- $DT_AVALIACAO->setEditable(FALSE);
- $DT_AVALIACAO->setValue(date("d/m/Y h:i:s"));
- $DT_ATUALIZACAO->setEditable(FALSE);
- $DT_ATUALIZACAO->setValue(date("d/m/Y h:i:s"));
- $NM_USUARIO->setEditable(FALSE);
- $NM_USUARIO->setValue('ELOPES');
- }
-
- /** samples
- $this->form->addQuickFields('Date', array($date1, new TLabel('to'), $date2)); // side by side fields
- $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation
- $fieldX->setSize( 100, 40 ); // set size
- **/
-
- // create the form actions
- $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');
- $this->form->addQuickAction(_t('New'), new TAction(array($this, 'onEdit')), 'bs:plus-sign green');
-
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 90%';
- // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
-
- parent::add($container);
- }
- }
- Como posso contornar está situação?
Usei o Adianti com ORACLE uma vez lembro que a data entrava assim 'dd/mm/yyyy hh:mm:ss' somente dessa forma com aspas como se fosse string, mas no campo date pena não tenho mais aqui para testar.
Boa tarde, Felipe!
Mas você realizava o insert manualmente sem as classes do Adianti?
Pois tentei economizar no código usando o TAction e deu esta mensagem e se for isso vou tentar escrever o insert manual.
Usava sim, não precisei mexer nas classes não , mas lembro que o Oracle tem um configuração de inserção de datas onde define como é feito o input.
Usava sim, não precisei mexer nas classes não , mas lembro que o Oracle tem um configuração de inserção de datas onde define como é feito o input.
Boa tarde,
O INSERT deveria ficar assim:
Alteramos a TConnection para que na próxima versão o formato seja definido logo após a conexão: