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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.039 c
1-1121784349
Rea
2005-07-19 18:45
2005.08.07
Добавить данные из Access в Corel Draw или... другой гр. пакет


14-1121770959
BorisMor
2005-07-19 15:02
2005.08.07
Письмо 15000 (Не про Украинцев)


3-1120132669
Леонид
2005-06-30 15:57
2005.08.07
Как правильно сделать перемещение указателя в гриде если...


1-1121409859
dip
2005-07-15 10:44
2005.08.07
Как узнать размеры окна TPopupMenu?


14-1121002318
Piter
2005-07-10 17:31
2005.08.07
Декомпиляция флеша





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