![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
БАЗЫ И ВЫСШАЯ МАТЕМАТИКА [D6, Access]
Галинка © (2004-05-14 07:56:00)Есть очень заумные формулы..:
j=1,N; i=1,l[j];
r0:=sqrt(sqr(x[i,j])+sqr(y[i,j]));
c1[i,j]:=sqr(0.08*(p1-I[i,j])-p2/Vozved(h,[j],p3));
fi[i,j]:=arctan(y[i,j]/x[i,j]);
c[i,j]:=c1[i,j]*sqr(cos(fi[i,j]-fi0))+sqr(sin(fi[i,j]-fi0));
b[1,1]:=b[1,1]+l[j];
b[2,1]=b[1,2]:=b[1,2]+l[j]*(K[j]-log(4*pi*sqr(r0)));
b[3,1]=b[1,3]:=b[1,3]-log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0);
b[2,2]:=b[2,2]+l[j]*sqr(K[j]-log(4*pi*sqr(r0)));
b[3,2]=b[2,3]:=b[2,3]-(K[j]-log(4*pi*sqr(r0)))*log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0);
b[3,3]:=sqr(log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0));
c[1]:=c[1]+I[i,j];
c[2]:=c[2]+I[i,j]*(K[j]-log(4*pi*sqr(r0)));
c[3]:=c[3]+I[i,j]*log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0);
Данные ко всему этому берутся из таблиц базы со структурой
Epicentry Punkty_nabludeniya
Id_epic Id_epic
Data DelX
Time DelY
Shir_epic Inabl
Dolg_epic
H_gip
K_max
Fi_0
Как это все можно реализовать ???
Всем спасибо....
Argon (2004-05-14 22:18:00) [1]Не стоит пользоваться
for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
RecordCount имеет свойство иметь значение строки на которой случайно стоит, лучше использовать
While not DBGrid1.DataSource.DataSet.Eof do
тогда все четко будет
MU (2004-05-14 15:29:00) [2]1. В Вашем коде записи в DBGrid2 должны быть отсортированы по полю Field[0]. Это так?
2. FindNext - тоже самое, что и Next
3. Вставьте перед циклом
DBGrid2.DataSource.DataSet.LocateDBGrid1.DataSource.DataSet.Fields[0].Name, [DBGrid1.DataSource.DataSet.Fields[0].AsInteger], []);
while (DBGrid1.DataSource.DataSet.Fields[0].AsInteger=
DBGrid2.DataSource.DataSet.Fields[0].AsInteger) do
MU (2004-05-14 15:03:00) [3]Удалено модератором
Примечание: дубль
MU (2004-05-14 15:03:00) [4]ParamZeml[k].Fi0:=DBGrid1.DataSource.DataSet.Fields[7].AsFloat;
DBGrid2.DataSource.DataSet.Locate(...)
with DBGrid2.DataSource.DataSet do
...
Petr V. Abramov (2004-05-14 14:59:00) [5]лучше сначала с в массивы все перегнать.
Галинка (2004-05-14 14:51:00) [6]2 sniknik Глюк как раз со второй таблицей...
Галинка (2004-05-14 14:44:00) [7]2 Sniknik
Так тоже было... Вроде тоже глючит
sniknik (2004-05-14 14:41:00) [8]FindFirst -> First
FindNext -> Next
for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do ->
while not DBGrid1.DataSource.DataSet.EOF
конечно если я правильно понял "глюк".
Галинка (2004-05-14 14:28:00) [9]
procedure TForm1.Button1Click(Sender: TObject);
var
i, j, k: Integer;
s: string;
begin
i:=1;
DBGrid1.DataSource.DataSet.FindFirst;
DBGrid2.DataSource.DataSet.FindFirst;
FieldNames:=DBGrid2.DataSource.DataSet.FieldList;
SetLength(ParamZeml,DBGrid1.DataSource.DataSet.RecordCount);
SetLength(ParamPunkty,DBGrid1.DataSource.DataSet.RecordCount);
for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
begin
if k>0 then DBGrid1.DataSource.DataSet.FindNext;
ParamZeml[k].XEpic:=DBGrid1.DataSource.DataSet.Fields[3].AsFloat;
ParamZeml[k].YEpic:=DBGrid1.DataSource.DataSet.Fields[4].AsFloat;
ParamZeml[k].Hgip:=DBGrid1.DataSource.DataSet.Fields[5].AsFloat;
ParamZeml[k].Kmax:=DBGrid1.DataSource.DataSet.Fields[6].AsFloat;
ParamZeml[k].Fi0:=DBGrid1.DataSource.DataSet.Fields[7].AsFloat;
with DBGrid2.DataSource.DataSet do
begin
while (DBGrid1.DataSource.DataSet.Fields[0].AsInteger=
DBGrid2.DataSource.DataSet.Fields[0].AsInteger) do
begin
SetLength(ParamZeml[k].Punkty,i);
if i>1 then FindNext;
for j:=2 to FieldNames.Count-1 do
begin
ParamZeml[k].Punkty[i-1,j-1]:=Fields[j].AsFloat;
s:=s+Fields[j].AsString+' ';
end;
ListBox1.Items.Add(s);
s:='';
inc(i);
end;
end;
end;
end;
Ошибка после первого пробега, хотя пробегаю всего 31 запись, а он говорит, что достигнут конец файла...
Галинка (2004-05-14 14:26:00) [10]Удалено модератором
Галинка (2004-05-14 14:25:00) [11]
procedure TForm1.Button1Click(Sender: TObject);
var
i, j, k: Integer;
s: string;
begin
i:=1;
DBGrid1.DataSource.DataSet.FindFirst;
DBGrid2.DataSource.DataSet.FindFirst;
FieldNames:=DBGrid2.DataSource.DataSet.FieldList;
SetLength(ParamZeml,DBGrid1.DataSource.DataSet.RecordCount);
SetLength(ParamPunkty,DBGrid1.DataSource.DataSet.RecordCount);
for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
begin
if k>0 then DBGrid1.DataSource.DataSet.FindNext;
ParamZeml[k].XEpic:=DBGrid1.DataSource.DataSet.Fields[3].AsFloat;
ParamZeml[k].YEpic:=DBGrid1.DataSource.DataSet.Fields[4].AsFloat;
ParamZeml[k].Hgip:=DBGrid1.DataSource.DataSet.Fields[5].AsFloat;
ParamZeml[k].Kmax:=DBGrid1.DataSource.DataSet.Fields[6].AsFloat;
ParamZeml[k].Fi0:=DBGrid1.DataSource.DataSet.Fields[7].AsFloat;
with DBGrid2.DataSource.DataSet do
begin
while (DBGrid1.DataSource.DataSet.Fields[0].AsInteger=
DBGrid2.DataSource.DataSet.Fields[0].AsInteger) do
begin
SetLength(ParamZeml[k].Punkty,i);
if i>1 then FindNext;
for j:=2 to FieldNames.Count-1 do
begin
ParamZeml[k].Punkty[i-1,j-1]:=Fields[j].AsFloat;
s:=s+Fields[j].AsString+' ';
end;
ListBox1.Items.Add(s);
s:='';
inc(i);
end;
end;
end;
end;
Ошибка после первого пробега, хотя пробегаю всего 31 запись, а он говорит, что достигнут конец файла...
Sly (2004-05-14 12:26:00) [12]2 Галинка ©
Уж не площади ли полигонов ищем?
han_malign (2004-05-14 11:36:00) [13]> ВЫСШАЯ МАТЕМАТИКА
- вообще это школьная геометрия(точнее стереометрия), но это вам на форум геодезистов
> БАЗЫ
для каждого Epicentry[j] находим все Punkty_nabludeniya[i] где Punkty_nabludeniya[i].Id_epic=Epicentry[j].Id_epic - вот вам и [i,j], а дальше к бейзистам, я в БД не силен... (хотя здесь простенький SELECT, возможно JOIN)
BillyJeans (2004-05-14 10:38:00) [14]DataBase.First;
While not DataBase.EOF do begin
h[j] := FieldByName('H_gip').AsInteger;
<...>
inc(j);
DataBase.Next;
end;
<формулы...>
Галинка (2004-05-14 10:33:00) [15]Для BillyJeans
Решить суммы (первый топик)..
BillyJeans (2004-05-14 10:26:00) [16]а что нужно реализовать то?
Галинка (2004-05-14 10:10:00) [17]Для Наталии
Можете представить приерный цикл?
jack128 (2004-05-14 09:13:00) [18]нету тут высшей математики. если Vozved - это возведение степень , то лудше используй Power из модуля Math
Anatoly Podgoretsky (2004-05-14 09:11:00) [19]Данные из таблиц берутся или с помощью FieldByName или Fields[I] или и постоянно созданых полей (на этапе программирования) и используюся напрямую или помещаются во временные переменные, расчеты проводятся обычным путем
Наталия (2004-05-14 09:01:00) [20]Я же не телепат...
А в чем трудность то?
На каком этапе она возникает?
При выборке данных? Подстановке в формулы?