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