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

Вниз

Чайницкий вопрос про добавление данных   Найти похожие ветки 

 
Kreyl   (2005-07-01 13:08) [0]

Задача выглядит так. Есть база данных. В ней таблица с рядами чисел a и b. Нужно создать таблицу со столбцом с, куда будет вноситься результат математической операции над а и и (ну, например, с=а+b).

Дело в том, что в книжках все примеры предполагают ввод данных в таблицу руками пользователя, через связанные с таблицей компоненты. А нужно по нажатию кнопки считать данные, выполнить вычисления, создать таблицу и внести в нее результаты. И потом сказать пользователю "ага" :-) То есть, выводить данные на форму не надо.

У меня возник затык с добавлением в существующую таблицу строк с полями с нужными значениями.

Я занес числа в Access 2003, зарегистрировал базу данных через ODBC. Версия DELPHI - 8.


 
Digitman ©   (2005-07-01 13:14) [1]


> У меня возник затык


ну, рассказывай ..


 
Dell3r ©   (2005-07-01 13:27) [2]

>А нужно по нажатию кнопки считать данные, выполнить вычисления,
На сколько я понимаю из сущесвующей таблицы

>создать таблицу и внести в нее результаты.
Зачем создавать дополнительную таблицу?

Берешь DBEdit1, DBEdit2, и DBEdit3
К первому привязываешь первый столбец ко второму второй к третьему третий
Потом
IntToStr(DBEdit3.Text):=StrToInt(DBEdit1.Text)+StrToInt(DBEdit2.Text);
Потом сохраняешь таблицу и ВСЁ.


 
Kreyl   (2005-07-01 13:44) [3]

2 Dell3r:
>А нужно по нажатию кнопки считать данные, выполнить вычисления,
На сколько я понимаю из сущесвующей таблицы

Да, совершенно верно.

>создать таблицу и внести в нее результаты.
Зачем создавать дополнительную таблицу?

Чтобы потом по ней искать.
Я поначалу создал ее в аксессе руками.

IntToStr(DBEdit3.Text):=StrToInt(DBEdit1.Text)+StrToInt(DBEdit2.Text);
Потом сохраняешь таблицу и ВСЁ.

Это приведет к образованию в DBEdit3 сразу всего столбца с результатами? То есть, перебирать исходную таблицу по строкам нет необходимости?
Если так, то как реализовать операцию c[i]=a[i]+a[i+1]?
Спасибо!


 
Sergey13 ©   (2005-07-01 13:49) [4]

2 [3] Kreyl   (01.07.05 13:44)
ДБЕдиты тут нафиг не нужны (это когда руками долбишь надо). А вот про циклы тебе почитать нужно.


 
Kreyl   (2005-07-01 14:05) [5]

2 Digitman:

 private
   MatrixBase  : BindingManagerBase;
   deltaBase   : BindingManagerBase;
   t0      : integer;
   delta0  : currency;
...
procedure TWinForm.Button3_Click(sender: System.Object; e: System.EventArgs);
var
 n, i          : integer;
 Ynow, Ybefore : Double;
 deltanow      : currency;
begin
 // clear table
 n:=deltaBase.Count;
 StatusBa.Panels[0].Text := n.ToString;
 if n>0 then
   for i:=1 to n do
   begin
     deltaBase.RemoveAt(0);
     Adapterd.Update(DataSet1, "spread_deltaI");
   end;
 StatusBa.Panels[0].Text := "aga";
 // convert to deltas
 n:=deltaBase.count;
 ProgressBar1.Maximum := n;

 for i:=1 to n do
 begin
   // Add new Row
   deltaBase.AddNew;
   try
     Adapterd.Update(DataSet1, "spread_deltaI");
   except
     on e : exception do
       MessageBox.Show(e.Message);
     end;

   //Calculate delta
   Ynow    := Convert.ToDouble(DataSet1.Tables[0].Rows[i].Item[1]);
   Ybefore := Convert.ToDouble(DataSet1.Tables[0].Rows[i-1].Item[1]);
   deltanow:= Ynow+Ybefore;

   // Edit added row
 n:=deltaBase.Count-1;
 deltaBase.Position := n;
   DataSet1.Tables[1].Rows[i-1].BeginEdit;
   DataSet1.Tables[1].Rows[i-1].Item[0]:=deltanow;
   DataSet1.Tables[1].Rows[i-1].EndEdit;
   try
     Adapterd.Update(DataSet1, "spread_deltaI");
   except
     on e : exception do
       MessageBox.Show(e.Message);
     end;

   ProgressBar1.Increment(1);
 end;
end;

Меня не оставляет уверенность, что я всё делаю через задницу. Увы мне.


 
Sergey13 ©   (2005-07-01 14:17) [6]

2[5] Kreyl   (01.07.05 14:05)
Вот так примерно не проще?
Table1.First;
while not table1.eof do
begin
 table2.Append;
 Table2.FieldByName("C").asFloat:=Table1.FieldByName("A").asFloat+Table1.FieldByName("B").asFloat;
 Table2.Post;
 table1.next;
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.06 c
1-1121211557
Скрин
2005-07-13 03:39
2005.08.07
Как снять скриншот ?


3-1120035526
cvg
2005-06-29 12:58
2005.08.07
Как в Desktop е вывести список таблиц?


1-1121376385
Графиг
2005-07-15 01:26
2005.08.07
Как сделать LoadFromStream для TPicture ?


4-1118417059
Earth
2005-06-10 19:24
2005.08.07
Перезагрузка, выключение, выход из системы.


1-1121941387
_Anton
2005-07-21 14:23
2005.08.07
Byte в OleVariant