Главная страница
    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.47 MB
Время: 0.004 c
2-1260815777
Dragon-zla
2009-12-14 21:36
2010.02.14
Из файла в список


15-1260347327
ford
2009-12-09 11:28
2010.02.14
TRegExpr поогите составить выражение


1-1237982706
Eraser
2009-03-25 15:05
2010.02.14
TListView и экшены


4-1228932250
alextim
2008-12-10 21:04
2010.02.14
Ошибки страницы


2-1260787419
noob_one
2009-12-14 13:43
2010.02.14
Как узнать что в Clientdataset загружен другой набор данных?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский