Como ela irá funcionar:
Nó passaremos como parâmetros, o ID do registro que está sendo editado, para fazermos o controle na cláusula WHERE do SQL, passaremos também o nome que foi editado e a idade.
Antes de executarmos qualquer alteração verificamos se os dados são válidos, se não estão em branco ou se idade é realmente um número.
O comando usado aqui será o ExecuteQuery(), o mesmo usado na inserção dos dados.
Vamos escrever.
No arquivo sqlf.h digite:
sqlf.h
//Aqui a função para editar os dados... void UpdateDB(wxString ID, wxString nome, wxString idade);
No arquivo sqlf.cpp:
sqlf.cpp
void UpdateDB(wxString ID, wxString nome, wxString idade)
{
//Primeiro vejo se o nome ou idade estão em branco
if(nome.IsEmpty() || idade.IsEmpty())
{
//Aviso ao usuário que algum dado está em branco:
wxMessageBox(wxT("Nenhum campo pode estar em branco!"));
//Cancelo a função...
return;
}
//Agora preciso ver se a idade é um número...
//Crio um long int
long int confere_idade;
//Tento converter a string idade em um número...
if(!idade.ToLong(&confere_idade))
{
//Se não conseguir, significa que ele não é um inteiro...
//Aviso o usuário...
wxMessageBox(wxT("O valor da idade (") + idade + wxT(") não é um número"));
//Cancelo a função...
return;
}
//Se chegamos até aqui, é porque tudo está correto...
//Vamos abrir o banco de dados:
wxSQLite3Database *db = OpenDB(GetExecPath() + wxT("/agenda.db3"));
//Agora vamos montar o sql para editar os dados...
wxString SQL = wxT("UPDATE contatos \n");
SQL += wxT("SET NOME = '") + nome + wxT("',\n");
SQL += wxT("IDADE = ") + idade + wxT("\n");
SQL += wxT(" WHERE ID = ") + ID + wxT(";");
//Agora executo a função ExecuteUpdate, que vimos no tutorial inserir, passando como
//parâmetro a wxString SQL...
db->ExecuteUpdate(SQL);
//Fecho db...
CloseDB(db);
}
Agora vamos chamar a mesma em framep.cpp:
framep.cpp
if(ID == -1)
{
//Se a variável ID for = -1, é porque estamos em inserção...
//E passamos as duas como parâmetros para a função InsertInDB()...
InsertInDB(get_nome, get_idade);
}
else
{
//Pegamos o valor do ID...
wxString get_id = wxString::Format(wxT("%d"), ID);
//Passamos como parâmetros, para a função...
UpdateDB(get_id, get_nome, get_idade);
}
Pequenas alterações que fiz na GUI do sistema.
framep.cpp
//Adicionei um tamanho padrão para a janela... this->SetSize(wxSize(450, 350)); //Adiciono o box dos botões ao box principal... //Aqui arrumei o tamanho do sizer dos botões em relação //a janela e dei um espaço de 10px na base boxp->Add(box_btns, 0, wxEXPAND|wxBOTTOM, 10);
Estamos quase terminando nosso sistema, falta apenas implementar a função de deletar...
Até a próxima.
0 comentários:
Postar um comentário