Erro ao inserir dados de um form em outra tabela(RESOLVIDO)

Criei um buton para dar baixa num lançamento.

/**

  • Insert a record on another table
    */

// SQL statement parameters
$insert_table = ‘movimento_financeiro’; // Table name
$insert_fields = array( // Field list, add as many as needed
‘idbanco’ => “’{banco}’”,
‘idconta_agencia’ => “’{agencia}’”,
‘tipo_conta’ => “’{tipoconta}’”,
‘conta’ => “’{conta}’”,
‘data’ => “’{data_quitacao}’”, // O ERRO TÁ NESSA BAGAÇA AQUI
‘tipo_documento’ => “’’”,
‘num_documento’ => “’’”,
‘debito_credito’ => “‘2’”,
‘favorecido’ => “‘Recebimento de Medição’”,
‘valor’ => “’{liquido}’”,
);

// Insert record
$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;

sc_exec_sql($insert_sql);


MENSAGEM APOS ACIONAR O BOTAO.

Erro ao acessar o banco de dados
SQLState: 22007Error Code: 241Message: [Microsoft][SQL Server Native Client 10.0][SQL Server]Falha ao converter data e/ou hora da cadeia de caracteres.

INSERT INTO movimento_financeiro (idbanco, idconta_agencia, tipo_conta, conta, data, tipo_documento, num_documento, debito_credito, favorecido, valor) VALUES (‘11’, ‘1’, ‘1’, ‘1’, ‘18092012’, ‘’, ‘’, ‘2’, ‘Recebimento de Medição’, ‘7715.25’)


quando retiro o campo de data funciona


Jean boa noite,

Eu não uso SQL Server, mas queria saber o seguinte: qual o padrão de data estabelecido no banco?

Veja bem. Todos os forms que são criados por App direto de uma tabela gravam normalmente as datas no padrão AAAA-MM-DD , mesmo que na front-end esteja DD-MM-AAAA.

neste caso parece que o script só é compatível com string ‘data’ => “’{data_quitacao}’”, e tá enviando DDMMAAAA quando deveria enviar DD-MM-AAAA logo o banco esta entendendo que é um inteiro e não uma data…

De um echo no campo data antes do script, use sc_date_convert para acertar o formato

Prezado Haroldo, vc tem razao. formatei a data antes do script e deu certo

{data_quitacao}= sc_date_conv({data_quitacao},“dd/mm/aaaa”,“db_format”);

é que o script estava passando um Inteiro e o campo data não aceita.

entao o codigo completo ficou assim:


{data_quitacao}= sc_date_conv({data_quitacao},“dd/mm/aaaa”,“db_format”);
/**

  • Insert a record on another table
    */

// SQL statement parameters
$insert_table = ‘movimento_financeiro’; // Table name
$insert_fields = array( // Field list, add as many as needed
‘idbanco’ => “’{banco}’”,
‘idconta_agencia’ => “’{agencia}’”,
‘tipo_conta’ => “’{tipoconta}’”,
‘conta’ => “’{conta}’”,
‘data’ => “’{data_quitacao}’”,
‘tipo_documento’ => “’’”,
‘num_documento’ => “’’”,
‘debito_credito’ => “‘2’”,
‘favorecido’ => “‘Recebimento de Medição’”,
‘valor’ => “’{liquido}’”,
);

// Insert record
$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;

sc_exec_sql($insert_sql);