Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.11;
Скачать: CL | DM;

Вниз

Запись не удаляется   Найти похожие ветки 

 
DevilDevil ©   (2006-04-15 22:31) [0]

При удалении записи средствами SQL, она действительно удаляется из Грида. Однако при следующем запуске проги, запись снова появляется. Почему?

// формирую SQL запрос в свойстве DeleteSQL
...
 Query1.Delete;
 // пробовал с Query1.ApplyUpdates;


 
Johnmen ©   (2006-04-15 23:22) [1]

>формирую SQL запрос в свойстве DeleteSQL

Как он выглядит?

>Однако при следующем запуске проги, запись снова появляется. Почему?

Потому, что транзакция была откачена. Видимо, неявно...

> пробовал с Query1.ApplyUpdates;

Это то здесь причём???


 
DevilDevil ©   (2006-04-16 01:22) [2]

> Johnmen ©   (15.04.06 23:22) [1]
Нет никакого флуда, есть задача, её надо решать

Вообще, я понял из-за чего не удалялось. Я задал в одном из свойств транзакцию. Использовал транзакцию как следует, всё получилось

Сейчас другой вопрос. В базе есть Блоб поля. Если обычные строковые и числовые поля я без особых проблем создам/изменю средствами SQL, то с этим трудности. Объясните, пожалуйста, как. Вообще, я раньше решал эту задачу с помощью компонента-таблицы. Начальству понадобились транзакции и из Query. А я в базах далеко не опытен. Поэтому, собственно, и прошу помощи. Да! При Query.Insert не обновляются поля Грида. Как решить?


 
Johnmen ©   (2006-04-16 01:29) [3]

По блобам - читать TBlobStream и т.п. и т.д.

> При Query.Insert не обновляются поля Грида.

Грид показывает то, что в наборе данных есть. НД обновился? Нет. Вот и ответ...


 
DevilDevil ©   (2006-04-16 01:56) [4]

> Johnmen ©   (16.04.06 01:29) [3]
Да, ты очень помог

Я не спрашиваю "что", я спрашиваю "как". Как такие профессионалы как ты справляются с обновлением, неужели бональной выборкой?


 
Johnmen ©   (2006-04-16 02:22) [5]

Такие профессионалы, как я, справляются с обновлением по-разному.
Это зависит от исходной постановки и конечной реализации задачи...
Какая постановка у тебя, лично мне не ясно...


 
DevilDevil ©   (2006-04-16 14:06) [6]

Ну хорошо, обновляю так:
Query.Post;
Query.Close;
Query.ExecSQL;


Сейчас другая проблема. Необходимо вставить новую запись. Заполняю InsertSQL:

INSERT INTO Licenses (Company, MachineID, History)
VALUES (:Company, 1234567, :History)

Проблема с параметрами. Т.е. я создаю и настраиваю параметры Company, MachineID, ...

Однако эти параметры не заносятся в таблицу, заносятся только явно указанные. В этом примере - MachineID. Лелаю так:

with Query do begin
//Prepare;
ParamByName("Company").AsString := Company;
//ParamByName("MachineID").AsInteger := MachineID;
ParamByName("History").Assign(History);
Insert;
Post;
Close;
ExecSQL;// обновляю данные в гриде
end;

Не может же быть так, что параметры не действуют на InsertSQL

P.S. Я использую компоненты IB Objects


 
Виталий Панасенко   (2006-04-17 09:09) [7]

А если так :
with Query do begin
//Prepare;
Insert;

ParamByName("Company").AsString := Company;
//ParamByName("MachineID").AsInteger := MachineID;
ParamByName("History").Assign(History);

Post;
{Close;
ExecSQL;// обновляю данные в гриде}
end;


 
Виталий Панасенко   (2006-04-17 09:11) [8]

Это я с утра "гоню"
А если так :
with Query do begin
ParamByName("Company").AsString := Company;
ParamByName("MachineID").AsInteger := MachineID;
ParamByName("History").Assign(History);
ExecSQL;
end;


 
K_VAL   (2006-04-17 10:31) [9]

var  BM1:TMemoryStream;
begin
  IBQuery2.Close;
  IBQuery2.SQL.Clear;
  IBQuery2.SQL.Add("Select * from KVARTIRA_S (:kod)");
  IBQuery2.Params[0].AsInteger := IBStoredProc1.ParambyName("kod_kvar").AsInteger;
  IBQuery2.Open;
  try
  finally
    IBTransaction2.Active := true;   // insert
  end;
  //
  BM1 := TMemoryStream.Create;
  Image2.Picture.Graphic.SaveToStream(BM1);
              //   компонент  Image2 -  читать в поток
  IBQuery2.Edit;
  try
    IBQuery2PLAN_KV.LoadFromStream(BM1);
    //  поле  IBQuery2[PLAN_KV] - заполняется из потока  
  finally
    BM1.Free;
  end;
  IBUpdateSQL2.SetParams(ukModify);
  IBUpdateSQL2.Apply(ukModify);
  try
  finally
   IBTransaction2.Active := false;
   IBQuery2.Close;
   IBQuery2.UnPrepare;
  end;
  //   insert  -  update


 
DevilDevil ©   (2006-04-17 10:33) [10]


> Виталий Панасенко   (17.04.06 09:11) [8]


В IB Object есть несколько SQL свойств: InsertSQL, EditSQL, DeleteSQL и SQL. Соответственно, первый запрос выпольняется при Insert, второй - вроде при Update или Edit, третий - при Delete, последний - при ExecSQL. По этому методу у меня вся таблица отображается снова


 
Johnmen ©   (2006-04-17 10:34) [11]


> K_VAL   (17.04.06 10:31) [9]


Что за чудо с try-finally?


 
Виталий Панасенко   (2006-04-17 11:31) [12]


> DevilDevil ©   (17.04.06 10:33) [10]
>
> > Виталий Панасенко   (17.04.06 09:11) [8]
>
>
> В IB Object есть несколько SQL свойств: InsertSQL, EditSQL,
>  DeleteSQL и SQL. Соответственно, первый запрос выпольняется
> при Insert, второй - вроде при Update или Edit, третий -
>  при Delete, последний - при ExecSQL. По этому методу у
> меня вся таблица отображается снова

Если все это аналогично таким же св-вам в FIBPl\us, то гонишь уже ты..
Код должен выглядеть примерно так:
Добавление
Query.Append;
Query.FieldByName("COMPANY").AsString := Company;
Query.FieldByName("MachineID").AsInteger := MachineID;
Query.FieldByName("History").Assign(History);
Query.Post;
Для удаления:
Query.Delete;
И не завбыть подтвердить транзакцию


 
DevilDevil ©   (2006-04-17 23:02) [13]

> Виталий Панасенко   (17.04.06 13:07) [6]
Если все это аналогично таким же св-вам в FIBPl\us, то гонишь уже ты..
Код должен выглядеть примерно так:
Добавление
Query.Append;
Query.FieldByName("COMPANY").AsString := Company;
Query.FieldByName("MachineID").AsInteger := MachineID;
Query.FieldByName("History").Assign(History);
Query.Post;
Для удаления:
Query.Delete;
И не завбыть подтвердить транзакцию

Виталий, ты в одной ветке грубишь, во второй помогаешь. Но, всё равно, спасибо! Сделал как ты сказал, всё сработало без проблем. Однако для удаления вроде всё таки надо заполнять DeleteSQL. А как быть с Edit? Там же надо указывать, какую запись изменяешь. У меня будет ключ ID : integer



Страницы: 1 вся ветка

Текущий архив: 2006.06.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.041 c
2-1148704224
Ezorcist
2006-05-27 08:30
2006.06.11
Значение переменной "по-умолчанию"))))


9-1131219429
Bogdan1024
2005-11-05 22:37
2006.06.11
DoCollision


2-1148377208
Мурзилка
2006-05-23 13:40
2006.06.11
можно ли создать свой шрифт?


11-1128106300
Sniper17
2005-09-30 22:51
2006.06.11
Владимир, выложите на вашем сайте 2.13 которую потом


15-1147939540
kozhanov
2006-05-18 12:05
2006.06.11
Проверка орфографии