Criar e Carregar Tabelas MySql via execução

Delphi

09/11/2004

Saudações,
estou colocando em minha aplicação um sql através de uma procedure que cria tabela e carrega dados nela no banco MySql. Após criar a tabela coloquei um messagebox perguntando se vc quer carregar os dados nesta nova tabela. Após clicar em sim - quando deveria carregar os dados da nova consulta na tabela criada - acontece o seguinte erro: MySql Error Code(1146) Table ´mysql.proc´ doesn´t exist. É como se precisasse dar um refresh no banco antes de carregar os dados na tabela. Alguém sabe como façon isso? Vai um trecho do código:
sql.add(´CREATE TABLE ´+table+´ (MAT_ALUNO VARCHAR (10) NOT NULL, ALUNO VARCHAR (70) NOT NULL,´);
     sql.add(´RESPONSAVEL VARCHAR (70), DT_PGTO DATETIME, VALOR DECIMAL (20,4), PARCELA VARCHAR (7),´);
     sql.add(´MES BIGINT (20) UNSIGNED, PRIMARY KEY(mat_aluno))´);
     prepare;
     ExecSQL;
//precisaria dau um refresh no banco a partir daqui (refresh naum funciona)
     if application.messagebox(´Deseja carregar a tabela?´, ´Carregar dados...´, mb_yesno) = idyes then
     begin
       with qryCarrega do
       begin
         close;
         sql.clear;
         sql.add(´INSERT INTO ´+table+´(MAT_ALUNO, ALUNO, RESPONSAVEL,´);



Elias Jr

Elias Jr

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

09/11/2004

Não seria necessário comitar primeiro para que a tabela se tornasse acessível?


GOSTEI 0
Gurc

Gurc

09/11/2004

Não seria necessário comitar primeiro para que a tabela se tornasse acessível?

Cara, faz bastante tempo que eu trabalhei com o MySQL/Delphi e na época consequia criar tabelas deste jeito, sim. Você está usando dbExpress, certo?
Tente criar a tabela através do SqlConnection já que assim não está funcionando, mas imagino que o problema esteja no banco, OK?
Qualquer coisa entre em contato.
Gustavo Royer Chaurais


GOSTEI 0
Elias Jr

Elias Jr

09/11/2004

Olá amigos,
estou utilizando a paleta MySqlDAC junto com o Delphi 5.0 Pro e MySql 5.0. No caso do Commit, devo utilizá-lo logo após criar as tabelas? (Após o ExecSQL). Já testei as duas rotinas separadamente e elas funcionam. Sei que o problema está sendo a não atualização do banco antes de carregar os dados (o banco não reconhece a tabela criada até darmos um refresh). Agradeço por toda a ajuda.


GOSTEI 0
Gurc

Gurc

09/11/2004

Imagino que o problema não seja com o commit, mas em todo caso, ele seria usado após o ExecSql, sim, mas não me parece que você está utilizando tranzações.
Usei o MySQL com Delphi 7, apenas, então, não estou tão gabaritado a te responder isso, mas, você já tentou usar a conexão destes componentes para executar o create table?


GOSTEI 0
Elias Jr

Elias Jr

09/11/2004

Saudações gente,
parece mentira mas resolvi o erro....que era apenas um bugzinho na linha do sql:
sql.add(´INSERT INTO ´+table+´{faltou um espaço aqui}(MAT_ALUNO, ALUNO, RESPONSAVEL,´);
.

Pesquisei que esse erro na verdade são alguns bugs que acontecem (como esse) e que naum é nada muito crítico. Muito obrigado pela ajuda.


GOSTEI 0
POSTAR