//--------------------------------------------------------------------------- // Удаляє строку з таблиці. //--------------------------------------------------------------------------- bool DeleteFromTable(AnsiString tname, int identity,bool message, AnsiString id_name ) { bool rezult = true; bool del = false; if(message) { if(MessageDlg("Ви дійсно хочете знищити запис?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes) { del = true; } }else{ del = true; } TIBQuery *q = CreateQuery(0, "delete from "+tname+" where "+((id_name == NULL)? ("ID_" + tname) : id_name)+" = "+IntToStr(identity) , false); try { if(del){ q->ExecSQL(); q->Transaction->Commit(); }else{ rezult = false; } }catch(...){ rezult = false; } delete q; return rezult; }
//--------------------------------------------------------------------------- // Вставляє стоку в таблицю. //--------------------------------------------------------------------------- int InsertIntoTable(AnsiString tname, TMyColumns args) { int rezult = true; TMyColumns::iterator iter; AnsiString str = "insert into "+tname+" ("; AnsiString str_p = " values ("; unsigned int i=0; for(iter = args.begin(); iter != args.end(); ++iter) { str += iter->first + (i == args.size()-1?" ) ":", "); str_p += ":p_"+iter->first + (i == args.size()-1?" ) ":", "); i++; } str += str_p; TIBQuery *q = CreateQuery(0, str, false); for(iter = args.begin(); iter != args.end(); ++iter) { q->ParamByName("p_"+iter->first)->Value = iter->second; i++; } try{ q->ExecSQL(); q->Transaction->Commit(); // q->SQL->Clear(); // q->SQL->Add( "select @@identity as 'id'" ); // q->Open(); // rezult = q->FieldByName("id")->AsInteger; rezult = 0; }catch(...){ rezult = false; } delete q; return rezult; }
//--------------------------------------------------------------------------- // Змінює дані строки в таблиці. //--------------------------------------------------------------------------- bool UpdateTable(AnsiString tname, int identity, TMyColumns args, AnsiString id_name) { bool rezult = true; TMyColumns::iterator iter; AnsiString str = "update "+tname+" set "; unsigned int i=0; for(iter = args.begin(); iter != args.end(); ++iter) { str += iter->first + "=:p_"+iter->first + (i == args.size()-1?" ":", "); i++; } str += " where "+((id_name == NULL)? ("ID_" + tname) : id_name)+" = :p_ID_"+tname; TIBQuery *q = CreateQuery(0, str, false); i=0; for(iter = args.begin(); iter != args.end(); ++iter) { q->ParamByName("p_"+iter->first)->Value = iter->second; i++; } try{ if(identity > 0) { q->ParamByName("p_ID_"+tname)->Value = identity; q->ExecSQL(); q->Transaction->Commit(); }else{ rezult = false; } }catch(...){ rezult = false; } delete q; return rezult; }