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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2010, 19:43   #1
Анн
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 18
По умолчанию Обновление таблиц

При добавлении данных в таблицу по нажатии на кнопку почему то DBGriD показывает пустую таблицу и даже без колонок, после закрытия формы и последующего открытия эти данные появляются и все вроде бы нормально...
Вопрос, как сделать чтобы новые данные сразу отображались в таблице.
Пробовала и Update и refresh и datasource пробовала закрывать открывать, ничего не помогает...
Прошу помощи!
Анн вне форума Ответить с цитированием
Старый 10.12.2010, 20:04   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от Анн Посмотреть сообщение
При добавлении данных в таблицу по нажатии на кнопку почему то DBGriD показывает пустую таблицу и даже без колонок, после закрытия формы и последующего открытия эти данные появляются и все вроде бы нормально...
Вопрос, как сделать чтобы новые данные сразу отображались в таблице.
Пробовала и Update и refresh и datasource пробовала закрывать открывать, ничего не помогает...
Прошу помощи!
извините с телепатией у меня не очень, можно узнать что за БД какие компоненты используете, код в котором добавляете записи. Если не трудно))
vovk вне форума Ответить с цитированием
Старый 11.12.2010, 18:33   #3
Анн
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 18
По умолчанию

бд связанная с заказами. Использую для подключения к ней компоненты adoconnection, adoquery, datasource. Для отображения данных dbgrid.

Код процедуры генератора заполнения данными:

Код:
procedure zakaz(time1,time2:string; aa,bb,cc,dd:integer);
  begin

    Datamodule2.ZakazQuery.SQL.Text:='insert into zakazi(data_priema,ID_client,ID_sotrud,ID_Yslygi,Summa,Data_vipolnenia)'
    + 'values('+''''+time1+''''+','+inttostr(aa)+','+inttostr(bb)+','+inttostr(cc)+','+inttostr(dd)+','+''''+time2+''''+')';
    Datamodule2.ZakazQuery.ExecSQL;

    Datamodule2.ZakazQuery.SQL.Text:='Select Clienti.ID_Client  from Clienti';
    Datamodule2.ZakazQuery.ExecSQL;

    Datamodule2.ZakazQuery.SQL.Text:='Select Yslygi.ID_Yslygi from Yslygi';
    Datamodule2.ZakazQuery.ExecSQL;

    Datamodule2.ZakazQuery.SQL.Text:='Select Sotrudniki.ID_Sotrud from Sotrudniki';
    Datamodule2.ZakazQuery.ExecSQL;


  end;

procedure TForm1.Frame11ToolButton5Click(Sender: TObject);
var i,k,m,n,ki,mi,ni,pr,a,b,c,d:integer;

tm,fm:tdatetime;
begin

  k:=datamodule2.ClientQuery.RecordCount;
  m:=datamodule2.SotrudQuery.RecordCount;
  n:=datamodule2.YslygQuery.RecordCount;
  for i:=1 to 10 do begin
    tm:=random(40179-36525)+36525;
    fm:=random(40179-36525)+36525;
    ki:=random(k);
    mi:=random(m);
    ni:=random(n);
    Datamodule2.ClientQuery.First;
    Datamodule2.ClientQuery.MoveBy(ki);
    Datamodule2.SotrudQuery.First;
    Datamodule2.SotrudQuery.MoveBy(mi);
    Datamodule2.YslygQuery.First;
    Datamodule2.YslygQuery.MoveBy(ni);
    {pr:=random(1000)+1;}

    a:=Datamodule2.ClientQuery.FieldByName('ID_Client').AsInteger;
    b:=Datamodule2.SotrudQuery.FieldByName('ID_Sotrud').AsInteger;
    c:=Datamodule2.YslygQuery.FieldByName('ID_Yslygi').AsInteger;
    d:=Datamodule2.YslygQuery.FieldByName('Cena').AsInteger;
     zakaz(datetostr(tm),datetostr(fm),a,b,c,d);
               end;
     
end;
Анн вне форума Ответить с цитированием
Старый 12.12.2010, 08:45   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Код:
    Datamodule2.ZakazQuery.SQL.Text:='insert into zakazi(data_priema,ID_client,ID_sotrud,ID_Yslygi,Summa,Data_vipolnenia)'
    + 'values('+''''+time1+''''+','+inttostr(aa)+','+inttostr(bb)+','+inttostr(cc)+','+inttostr(dd)+','+''''+time2+''''+')';
    Datamodule2.ZakazQuery.ExecSQL;
это действие мне понятно,

а для чего это?
Код:
    Datamodule2.ZakazQuery.SQL.Text:='Select Clienti.ID_Client  from Clienti';
    Datamodule2.ZakazQuery.ExecSQL;

    Datamodule2.ZakazQuery.SQL.Text:='Select Yslygi.ID_Yslygi from Yslygi';
    Datamodule2.ZakazQuery.ExecSQL;

    Datamodule2.ZakazQuery.SQL.Text:='Select Sotrudniki.ID_Sotrud from Sotrudniki';
    Datamodule2.ZakazQuery.ExecSQL;
в TADOQuery для выполнения селективных запросов (тех которые возвращают набор данных)
используется open а не ExecSql
не
Код:
    Datamodule2.ZakazQuery.ExecSQL;
а
Код:
    Datamodule2.ZakazQuery.open;
потом все эти запросы вообще без смысла. 3 раза запрашиваются разные данные и нигде не используются. и в конце в датасете будет содержатся набор данных которые вернутся в результате последнего запроса, то есь вот
Код:
Datamodule2.ZakazQuery.SQL.Text:='Select Sotrudniki.ID_Sotrud from Sotrudniki';
если у вас к DBGrid серез Datasource подключен Datamodule2.ZakazQuery,
то после добавления нужно было
Код:
    Datamodule2.ZakazQuery.SQL.Text:='запрос';
    Datamodule2.ZakazQuery.open;
vovk вне форума Ответить с цитированием
Старый 12.12.2010, 21:52   #5
Анн
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 18
По умолчанию

Этот код для добавления данных в главную таблицу из остальных.

Код:
 Datamodule2.ZakazQuery.SQL.Text:='Select Clienti.ID_Client  from Clienti';
    Datamodule2.ZakazQuery.ExecSQL;

    Datamodule2.ZakazQuery.SQL.Text:='Select Yslygi.ID_Yslygi from Yslygi';
    Datamodule2.ZakazQuery.ExecSQL;

    Datamodule2.ZakazQuery.SQL.Text:='Select Sotrudniki.ID_Sotrud from Sotrudniki';
    Datamodule2.ZakazQuery.ExecSQL;
Попробовала заменить ExecSQL на OPEN
результат не изменился,как Вы и сказали, код сотрудников выводит...
Анн вне форума Ответить с цитированием
Старый 12.12.2010, 22:45   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от Анн Посмотреть сообщение
Этот код для добавления данных в главную таблицу из остальных.

Код:
 Datamodule2.ZakazQuery.SQL.Text:='Select Clienti.ID_Client  from Clienti';
    Datamodule2.ZakazQuery.ExecSQL;

    Datamodule2.ZakazQuery.SQL.Text:='Select Yslygi.ID_Yslygi from Yslygi';
    Datamodule2.ZakazQuery.ExecSQL;

    Datamodule2.ZakazQuery.SQL.Text:='Select Sotrudniki.ID_Sotrud from Sotrudniki';
    Datamodule2.ZakazQuery.ExecSQL;
Попробовала заменить ExecSQL на OPEN
результат не изменился,как Вы и сказали, код сотрудников выводит...
Эти запросы ничего никуда не добавляют, добавляются данные запросом вида
Код:
INSERT INTO имя_таблицы (имя поля1, имя поля2...имяполяN ) values(значение1, значение2....значениеN)
запросы вида SELECT ..FROM.. возвращают набор данных.

Скажите, какие данные должен отобразить грид?

Последний раз редактировалось vovk; 12.12.2010 в 22:48.
vovk вне форума Ответить с цитированием
Старый 13.12.2010, 19:26   #7
Анн
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 18
По умолчанию

должны отобразиться код клиента, код сотрудника, код услуги( для этих трех как раз и запросы), ну и там сумма, дата приема и выполнения.
Анн вне форума Ответить с цитированием
Старый 13.12.2010, 19:41   #8
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

чтоб получить данные из этих 3 таблиц сразу, нужно и запрос делать одновременно по всем 3 таблицам
если бы вы дали имена таблиц, состав полей, внешние ключи (по каким полям таблицы связаны), и понятное описание набора данных который желаете получить запросом, то я (или ктонибудь из форумчан) легко бы составили нужный вам запрос.
Ну ей богу все нужные данные как будто клещами из вас тянуть приходится)) Неужели там всё такое секретное что перед прочтением сьесть?))
vovk вне форума Ответить с цитированием
Старый 13.12.2010, 22:11   #9
Анн
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 18
По умолчанию

секретного ничего нет))))
мне нужно из таблиц сотрудники, клиенты и услуги забрать данные, такие как код сотрудника, код клиента код услуги..Вот, чтобы все это добавлялось в таблицу заказы при нажатии на кнопку...задание дали заполнить этими данными таблицу заказы на несколько сотен строк и более

А таблицы, поля и ключи на схеме можно посмотреть)
Изображения
Тип файла: jpg схема данных.JPG (27.4 Кб, 50 просмотров)
Анн вне форума Ответить с цитированием
Старый 13.12.2010, 22:21   #10
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

ну я так понял, всё заполняется, только вот это лишнее
Код:
 Datamodule2.ZakazQuery.SQL.Text:='Select Clienti.ID_Client  from Clienti';
    Datamodule2.ZakazQuery.ExecSQL;

    Datamodule2.ZakazQuery.SQL.Text:='Select Yslygi.ID_Yslygi from Yslygi';
    Datamodule2.ZakazQuery.ExecSQL;

    Datamodule2.ZakazQuery.SQL.Text:='Select Sotrudniki.ID_Sotrud from Sotrudniki';
    Datamodule2.ZakazQuery.ExecSQL;
думаю что понял, хотя.. в общем, что содержится в
Код:
 Datamodule2.ZakazQuery.SQL.Text
при запуске приложения?
vovk вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление сводных таблиц одной кнопкой! masterenergy Microsoft Office Excel 6 02.01.2015 16:32
Сформировать из 30 таблиц 15 000 таблиц, за 15 минут. kola672 Фриланс 31 19.10.2010 01:22
Обновление таблиц Умница++ Microsoft Office Excel 5 06.05.2010 18:04
Обновление Таблиц Delphi CrossDeLena Помощь студентам 1 29.11.2009 18:48
Обновление таблиц Office Microsoft Office Excel 1 31.07.2007 09:09