Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2015, 21:37   #11
mixa33rus
Пользователь
 
Регистрация: 28.11.2014
Сообщений: 10
По умолчанию

Хотя стала появляться ошибка "access violation at address 00000000 read of address 00000000"

У меня один DBGrid1 на 4 таблицы базы данных. В зависимости от того какой Sheet показан Show загружается определенная таблица (DataSource).

Загружается так:

Код:
  DBGrid1.DataSource:=DataModule3.DataSource1;
  DBGrid1.Columns[0].FieldName:='DATE';
  DBGrid1.Columns[0].Title.Caption:='Äàòà';
  DBGrid1.Columns[0].Width:=60;
  ...
  DBGrid1.Columns[5].FieldName:='COMMENT';
  DBGrid1.Columns[5].Title.Caption:='Êîììåíòàðèé';
  DBGrid1.Columns[5].Width:=100;
По обработчику двойного клика по DBGrid1 идет выгрузка из таблицы в различные компоненты. И тут ошибка:

Код:
      for i:=0 to TreeView6.Items.Count-1 do
         if DBGrid1.Fields[2].AsString = TreeView6.Items[i].text then
            with TreeView6 do
При трассировке данные DBGrid1.Fields[2].AsString равняются nill. Хотя в других Fields данные есть. А в DBGrid1 визуально Fields[2] все отображается. Ошибка происходит только тогда, когда была смена таблицы в DBGrid1.

Попробовал вставить
Код:
DBGrid1.Columns.Insert(0);
после DBGrid1.DataSource:=DataModule3.Dat aSource1; выше указанного кода. Ошибка не появляется, но создаются лишние поля.

Думаю может DBGrid1 полностью очищать перед заполнением, чтобы он был как сразу после загрузки формы без смены таблицы. Как это лучше сделать?

Скрин проги прикреплю

Сделал вот так
Код:
  DBGrid1.DataSource:=DataModule3.DataSource4;
  DBGrid1.Columns.Clear;
  DBGrid1.Columns.Insert(0);
  DBGrid1.Columns[0].FieldName:='DATE';
  DBGrid1.Columns[0].Title.Caption:='Äàòà';
  DBGrid1.Columns[0].Width:=60;
  DBGrid1.Columns.Insert(1);
  DBGrid1.Columns[1].FieldName:='SUMM_BY';
  DBGrid1.Columns[1].Title.Caption:='Ñóììà ïîêóïêè';
  DBGrid1.Columns[1].Width:=200;
Не очень хорошо, но работает исправно :D

Сделал - молодец. Только про кнопочку Правка не забывай. И когда копируешь из IDE делфи с кириллицей - раскладку клавиатуры кириллическую включай. А то на эти абры-кадабры тоскливо смотреть
Изображения
Тип файла: jpg Снимок.JPG (49.5 Кб, 126 просмотров)

Последний раз редактировалось Аватар; 15.04.2015 в 21:43.
mixa33rus вне форума Ответить с цитированием
Старый 03.05.2015, 15:15   #12
mixa33rus
Пользователь
 
Регистрация: 28.11.2014
Сообщений: 10
По умолчанию

Помогите, пожалуйста)) уже столько времени убил на решении след задачи. Есть таблица перемещение денег между счетами и есть таблица самих счетов. Когда перемещаем деньги в количестве 'Х' со счета 'А' в счет 'B', в таблице счетов баланс должен отобразится как A: -X, B: X.

Все операции подсчета (UPADATE поля SUMM и дальнейший вывод таблицы на форму) происходят в хранимой процедуре при загрузке формы.

Код такой:
Код:
begin
UPDATE PLACE set SUMM=(
 (select sum(SUMM) from "MOVING" where "MOVING".NAME_PLACE_IN=:NAME)
-(select sum(SUMM) from "MOVING" where "MOVING".NAME_PLACE_OUT=:NAME)
) where NAME=:NAME;
  suspend;
end
Но при выполнение кода везде по null
Причем похожий код

Код:
(select sum(SUMM) from "IN" where "IN".NAME_PLACE=:NAME)
-(select sum(SUMM) from OUT where OUT.NAME_PLACE=:NAME)
выполняется как нужно. Но это уже другие таблицы.

По данным из скрина должно получится Сбербанк 1000, газпромбанк -1000

Криво, но сделал
Изображения
Тип файла: jpg Безимени-1.jpg (13.3 Кб, 108 просмотров)

Последний раз редактировалось mixa33rus; 03.05.2015 в 21:04.
mixa33rus вне форума Ответить с цитированием
Старый 04.05.2015, 10:19   #13
knight
Дон Кихот
Форумчанин
 
Аватар для knight
 
Регистрация: 17.01.2008
Сообщений: 130
По умолчанию

Второй скрипт правильный. Он работает с двумя таблицами
А ваш отнимает сумму от суммы одной и той же таблицы
knight вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TreeView - идентификатор элемента списка spirit-ua Общие вопросы Delphi 10 08.08.2013 16:05
VC++ нарисовать плюс/минус как в злементе treeView для раскрывания списка mikl1981 Visual C++ 0 28.05.2013 10:07
Вывод списка символов справа налево 5 раз подряд и исключить вывод цифр Gareek Помощь студентам 2 23.12.2011 21:41
TreeView - необходимо развернуть нужный узел, независимо от степени вложенности Mikhail Bakurov Общие вопросы C/C++ 0 20.05.2009 07:42
Вывод БД в TreeView? Snegovik Помощь студентам 23 30.09.2008 20:43