Calera, procurei a sintaxe para o UCanAccess mas pelo que vi não encontrei nada de estranho na minha Query.
Qual o objetivo dela: No meu sistema mantenho o histórico de alterações em um processo. Diferencio cada registro pela Data/Hora de edição (a maior Data/Hora é o registro atual). Neste sistema atual, preciso pegar o último registro e incluir algumas informações adicionais, salvando com uma nova Data/Hora.
Exemplificando (e simplificando) faço isso da seguinte maneira:
String sql = “INSERT Into BASE(Campo1, Campo2, Campo3, Campo4, DataHora)” +
"SELECT b.Campo1, b.Campo2, b.Campo3, “NovoDado”, Now() FROM BASE AS b, “+
”(SELECT Campo1, Max(DataHora) AS MaxData FROM BASE Group By Campo1) AS a "+
“WHERE b.Campo1= a.Campo1 AND DataHora=MaxData”;
Ou seja, para preencher os campos do registro, vou buscar o registro mais recente e acrescento novas informações (NovoDado e Now()) . A solução óbvia seria salvar o último registro como um objeto, alterar as propriedades que desejo e depois salvar no banco, mas nisso tbm estou tendo problemas com a codificação dos caracteres especiais. Por isso preferi essa maneira de fazer.
Sabe se existe algum problema com isso?
Obrigado pela paciência e ajuda.
A minha query é:
String sql = “insert into BasePROC (Cod_PROC, Entr_data_hora, Entr_anomes, Entr_data, Entr_hora, Aber_anomes, Aber_data, Aber_hora, Ence_anomes, Ence_data, Ence_hora, Login, Login_Nome, Login_Equipe, User_Respon, User_Respon_Equipe, Rito, Status_Andamento, Fase_Andamento, Data_do_Termo, Observacoes, Cod_Pre, DIR, Membro_1, Membro_2, Membro_3, Dt_Dist_Turma_DIR, Dt_JulgTurma_DIR, Dt_JulgTurma_DIR_Eft, Membro_1_Pleno, Dt_Dist_Pleno, Dt_JulgPleno, Dt_JulgPleno_Eft, Dt_Entrega_Rlt_Inicial, Dt_Entrega_Rlt_Inicial_Eft, Dt_Revisao_JURID, Dt_Revisao_JURID_Eft, Dt_Rlt_Final_Intimacao, Dt_Rlt_Final_Intimacao_Eft, Dt_Entrega_Rlt_Inicial_Pleno, Dt_Entrega_Rlt_Inicial_Pleno_Eft, Dt_Revisao_JURID_Pleno, Dt_Revisao_JURID_Pleno_Eft, Dt_Rlt_Final_Intimacao_Pleno, Dt_Rlt_Final_Intimacao_Pleno_Eft, Distribuido_S_N, Conexo, DT_Public_Site)”
+ "SELECT b.Cod_PROC, Now(), Year(Now())&Month(Now()), Date(), Format(Now(), ‘Long Time’), b.Aber_anomes, b.Aber_data, b.Aber_hora, b.Ence_anomes, b.Ence_data, b.Ence_hora, “
+ “’”+proc.getLogin() + “’, '” + proc.getLogin_nome() + “’, '” + proc.getLogin_equipe() +”’, "
+ "b.User_Respon, b.User_Respon_Equipe, b.Rito, b.Status_Andamento, b.Fase_Andamento, b.Data_do_Termo, b.Observacoes, b.Cod_Pre, “
+ (proc.getDIR()==null?“b.DIR, “:”’”+proc.getDIR().toString()+”’, “)
+ (proc.getMembro_1()==null?“b.Membro_1, “:”’”+proc.getMembro_1().toString()+”’, “)
+ (proc.getMembro_2()==null?“b.Membro_2, “:”’”+proc.getMembro_2().toString()+”’, “)
+ (proc.getMembro_3()==null?“b.Membro_3, “:”’”+proc.getMembro_3().toString()+”’, “)
+ (proc.getDt_dist_turma_DIR()==“now”? proc.getDt_dist_turma_DIR()+”, ": "b.Dt_Dist_Turma_DIR, ")
+ "b.Dt_JulgTurma_DIR, "
+ (proc.getDt_julgturma_DIR_eft()==null?"b.Dt_JulgTurma_DIR_Eft, “: “#”+ proc.getDt_julgturma_DIR_eft()+”#, “)
+ (proc.getMembro_1_pleno()==null?“b.Membro_1_Pleno, “:”’”+proc.getMembro_1_pleno().toString()+”’, “)
+ (proc.getDt_dist_pleno()==“now”? proc.getDt_dist_pleno()+”, ": "b.Dt_Dist_Pleno, ")
+ "b.Dt_JulgPleno, “
+ (proc.getDt_julgpleno_eft()==null?“b.Dt_JulgPleno_Eft, “:proc.getDt_julgpleno_eft()+”, “)
+ " b.Dt_Entrega_Rlt_Inicial, b.Dt_Entrega_Rlt_Inicial_Eft, b.Dt_Revisao_JURID, b.Dt_Revisao_JURID_Eft, b.Dt_Rlt_Final_Intimacao, b.Dt_Rlt_Final_Intimacao_Eft, b.Dt_Entrega_Rlt_Inicial_Pleno, b.Dt_Entrega_Rlt_Inicial_Pleno_Eft, b.Dt_Revisao_JURID_Pleno, b.Dt_Revisao_JURID_Pleno_Eft, b.Dt_Rlt_Final_Intimacao_Pleno, b.Dt_Rlt_Final_Intimacao_Pleno_Eft, b.Distribuido_S_N, b.Conexo, b.DT_Public_Site FROM BasePROC as b,”
+ “(SELECT Cod_PROC, Max(Entr_data_hora) as MaxData From BasePROC Where Cod_PROC=’” + proc.getCod_Proc() +”’ Group by Cod_PROC) as a WHERE b.Cod_PROC=a.Cod_PROC And b.Entr_data_hora=MaxData”;