Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Записи в таблицы [D7, IB7.x]


mpokemonov ©   (2005-12-02 16:10:00) 

Добрый день!
Ситуация: есть таблица, производится фильтрация
table1.Active:=true;
table1.Filter:='"pole"='''+ edit1.Text+'''';
table1.Filtered:=true;
после этого производятся изменения в данных, которые необходимо insert в тот же table1.
Вопрос: как сделать так, чтобы старые данные остались, а новые добавились..


mpokemonov   (2005-12-06 10:26:00) [1]

Добрый день!
Всем спасибо за помощь! Вопрос решился сам собой - глюк оболочки :-(
переустановил делфю - помогло :-)


аматор   (2005-12-02 23:37:00) [2]

В серверах, кажись, Table (и тот муляж) - всё работает на запросах...
Ссори, для Вашей проблемы нужно выполнить запрос (Дерзайте). Да IBDataSet запросы хочет. (Извиняюсь, с ветки про парадокс забежал сюда и не прочёл, что вопрос о сервере).


Fay   (2005-12-02 19:32:00) [3]

2 mpokemonov ©   (02.12.05 19:13) [16]
ТОГДА РАБОТАЙ ЧЕРЕЗ IBDataSet !!!!!!!!!!!!!!

OK?!!!!!!!!!


mpokemonov   (2005-12-02 19:13:00) [4]

ага, все такие умные и терпеливые...только пример последний, он замечательно, впрочем как и все остальные, работает , ЕСЛИ НЕ ВКЛЮЧЕНА ФИЛЬТРАЦИЯ!!!!
ПРИ ВКЛЮЧЕННОЙ фильтрации НЕ РАБОТАЕТ INSERT!!!!


аматор   (2005-12-02 18:56:00) [5]

Anatoly Podgoretsky - ну и терпение (завидую)............

table1.Insert(или Edit); кажись сюда.
table1.FieldByName('Summ_mat').AsString:=d;
..............................................................
table1.FieldByName('Zakaz').AsString:=combobox3.Text;

А Вы кажись заработались...


mpokemonov   (2005-12-02 17:10:00) [6]

да понятно! вопрос - почему к фильтрованным данным не применимо insert?
как только я снимаю фильтрацию, все окей, но мне нужно с отобранными данными работать.


Anatoly Podgoretsky   (2005-12-02 17:03:00) [7]

mpokemonov ©   (02.12.05 17:02) [12]
Перевожу - набор данных не находится в режиме редактирования или вставки.


mpokemonov   (2005-12-02 17:02:00) [8]

ругня: table1 not in edit or insert mode ...
.edit задан.
ругня возникает только тогда, когда я начинаю добавлять запись...
происходит только с фильстрованными записями :-(


Anatoly Podgoretsky   (2005-12-02 16:57:00) [9]

mpokemonov ©   (02.12.05 16:43) [10]
Как? Матом? Или по человечески?


mpokemonov   (2005-12-02 16:43:00) [10]

ясен что подтверждает, но проблема в том, что как только я указываю явно действие: append\insert - начинает ругаться. А если я просто post сделаю, он мне перезапишет текущую строку, а мне нужно новую измененную.В этом как раз и есть вопрос


Anatoly Podgoretsky   (2005-12-02 16:41:00) [11]

mpokemonov ©   (02.12.05 16:39) [8]
Дык неправильно мнение, он подверждает и добавление в таблицу. А если ты нигде не указываешь добавить, то и говорить об добавлении не приходится. У тебя что курсовая?


mpokemonov   (2005-12-02 16:39:00) [12]

дык post подтверждает изменение, но я нигде явно не указываю, что нужно это изменение "добавить", а не "произвести над текущей записью"


Anatoly Podgoretsky   (2005-12-02 16:37:00) [13]

mpokemonov ©   (02.12.05 16:35) [6]
Вот здесь нужно создать новую запись и добавить в ту же таблицу.

Здесь нужно дать команду .Post


mpokemonov   (2005-12-02 16:35:00) [14]

идет пересчет отфильтрованных значений - меняется сумма, в зависимости от партии.
если просто изменить - вопросов нет, проблема только когда нужно Insert new record :-(
try

a:=table1.FieldByName('Tsena_mat').AsVariant; //Öåíà
b:=table1.fieldbyname('Kol_mat').AsVariant;//êîë-âî íà åä-öó
f:=table1.fieldbyname('Brak').AsVariant; //Áðàê
c:=edit1.Text; //Ïàðòèÿ
g:=c*b; //Êî-âî íà ïàðòèþ
d:=(g+f)*a;

table1.FieldByName('Summ_mat').AsString:=d;

table1.FieldByName('Smeta').AsString:=edit4.Text;
table1.FieldByName('Partia').AsString:=edit1.Text;
table1.FieldByName('Razrab').AsString:=edit7.Text;
table1.FieldByName('date').AsString:=datetostr(date1.Date);
table1.FieldByName('date_FIN').AsString:=datetostr(date2.Date);
table1.FieldByName('Ved_pr').AsString:=combobox2.Text;
table1.FieldByName('Zakaz').AsString:=combobox3.Text;

Вот здесь нужно создать новую запись и добавить в ту же таблицу.
table1.Next;

except
application.MessageBox('Îøèáêà â ðàçäåëå ìàòåðèàëû!','Âíèìàíèå!',mb_ok+mb_ic onstop);
end;


Anatoly Podgoretsky   (2005-12-02 16:30:00) [15]

mpokemonov ©   (02.12.05 16:27) [4]
До сих пор подобное не наблюдалось. Пробовать конечно можно, но еще лучше делать правильно. Твоего кода мы не видим, вероятно в нем ошибка.


mpokemonov   (2005-12-02 16:27:00) [16]

Anatoly Podgoretsky ©   (02.12.05 16:18) [1]
Insert + Post

не подходит - ибо insert при Filter почему-то не хочет делаться, пробовал :-((


Сафаров   (2005-12-02 16:21:00) [17]

как-то запутанно.
requery чем не подходит?


Desdechado   (2005-12-02 16:19:00) [18]

> производятся изменения в данных, которые необходимо insert
так изменения или добавления?

> как сделать так, чтобы старые данные остались, а новые добавились
так всегда и делается, а что у тебя?


Anatoly Podgoretsky   (2005-12-02 16:18:00) [19]

Insert + Post


Наверх

Титульная страница Поиск, карта сайта Написать письмо