Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.02.14;
Скачать: [xml.tar.bz2];

Вниз

проблема в сохранение в базе   Найти похожие ветки 

 
Xmen   (2009-12-11 09:37) [0]

Привет мастерам.
У меня такая проблема.
Была программа нормально работающая создан в Д7 и база в FB2.1 . Некоторый время назад переустановил дельфи, теперь у меня Дельфи Лайт. Все нормально работает. Сегодня создал в базе еще одну таблицу у него 3 поля:имя диска, размер диска, свободное место диска. Из проги заполнил первое поле, ввел 3 записи (С,D,E) и сохранил. Написал код который определяет свободное место и полный объём дисков и сохраняет его в этой таблицы. Но интересное то что эти записи он не сохраняет в таблице.
var
 AmtFree: Int64;
 Total:   Int64;
 i:Integer;
begin
 Dm_Pochta.dtsDisk.Open;
 Dm_Pochta.dtsDisk.First;
 while not Dm_Pochta.dtsDisk.EOF do
   begin
     if Dm_Pochta.dtsDisk.FieldByName("Disk_name").AsVariant="C" then  i:=3;
     if Dm_Pochta.dtsDisk.FieldByName("Disk_name").AsVariant="D" then  i:=4;
     if Dm_Pochta.dtsDisk.FieldByName("Disk_name").AsVariant="E" then  i:=5;
     AmtFree := DiskFree(i);
     Total := DiskSize(i);
     Dm_Pochta.dtsDisk.Edit;
     Dm_Pochta.dtsDisk.FieldByName("Disk_free_size").AsVariant := AmtFree/(1024*1024);
     Dm_Pochta.dtsDisk.FieldByName("Disk_total").AsVariant := Total/(1024*1024);
     Dm_Pochta.dtsDisk.Post;
     Dm_Pochta.TR.CommitRetaining;
     Dm_Pochta.dtsDisk.Next;
   end;
может у кого небуд такое было? у меня раньше то кого не было.


 
StriderMan ©   (2009-12-11 14:29) [1]

Ошибка какая-нибудь вылазит?
Какой тип транзакции?

Что такое dtsDisk? если TIBDataSet то у него должен быть корректно заполнен UpdateObject, какой там запрос ModifySQL ?


 
zorik ©   (2009-12-11 14:33) [2]

Ты ручками ввел добавили 3 записи (С,D,E)? Точно? Пройдись отладчиком, попадает ли он в цикл while


 with Dm_Pochta.dtsDisk do
 begin
   Open;  
   while not EOF do
   begin
     case UpperCase(FieldByName("Disk_name").AsString[1]) of
       "C": i := 3;      
       "D": i := 4;      
       "E": i := 5;      
     end;
     AmtFree := DiskFree(i);
     Total := DiskSize(i);
     Edit;
     FieldByName("Disk_free_size").Value := AmtFree/(1024*1024);
     FieldByName("Disk_total").Value := Total/(1024*1024);
     Post;
     Next;
   end;
   Dm_Pochta.TR.CommitRetaining;
 end;


 
zorik ©   (2009-12-11 14:40) [3]

1. Надо еще стартануть транзакцию, но может она и автоматически стартует
2. CommitRetaining нежелательно использовать, а просто Commit
3. Неплохо бы заключить в блок try-except и в случае чего делать откат

Ты подтверждал транзакцию в цикле - это нехорошо, возможно CommitRetaining перебрасывал на первую запись, и еще прописные и строчные буквы дисков


 
Xmen   (2009-12-11 15:18) [4]


> StriderMan ©   (11.12.09 14:29) [1]
> Ошибка какая-нибудь вылазит?Какой тип транзакции?Что такое
> dtsDisk? если TIBDataSet то у него должен быть корректно
> заполнен UpdateObject, какой там запрос ModifySQL ?

интересно то что не выдает ошибку.
Да это Датасет и у него правил заполнены поля.

CommitRetaining и по вашему сделал вне цикла. Но результат тот же.

Я попробовал через Тэйбл запись получился но через датасет не получается.
Не понятно.


 
Sergey13 ©   (2009-12-11 15:48) [5]

> [4] Xmen   (11.12.09 15:18)
> Да это Датасет и у него правил заполнены поля.

Тексты запросов приведи?


 
StriderMan ©   (2009-12-11 16:20) [6]


> Dm_Pochta.TR.CommitRetaining;

брэкпоинт сюда пробовал? Приходит?

Кстати какие параметры транзакции?


 
Sergey13 ©   (2009-12-11 16:52) [7]

ИМХО там скорее всего в модифицирующих запросах в секции where перчислены все поля. Индексное поле не указано.


 
Xmen   (2009-12-14 07:02) [8]


> Sergey13 ©   (11.12.09 16:52) [7]
> ИМХО там скорее всего в модифицирующих запросах в секции
> where перчислены все поля. Индексное поле не указано.

попробую это исправить



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

Форум: "Начинающим";
Текущий архив: 2010.02.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.027 c
1-1237192368
Kolan
2009-03-16 11:32
2010.02.14
Дополнение перечисления


15-1260203381
БарЛог
2009-12-07 19:29
2010.02.14
В Китае задержали водителя с картоном вместо лобового стекла :)


15-1260263433
Andjey
2009-12-08 12:10
2010.02.14
Проверка файла на вирус


15-1260353314
ocean
2009-12-09 13:08
2010.02.14
Mozilla с Avast?


1-1238073068
Afonya
2009-03-26 16:11
2010.02.14
ошибка при передаче формальных параметров





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский