![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как скопировать целиком строку в таблице.
altatr © (2008-03-27 13:13:00)Имеются две полностью одинаковые таблицы. Table1 и Table2
Можно ли копировать записи из одной в другую сразу всей строкой?
Сейчас я это делаю так:
Table2.Append;
Table2.FieldByName('FIO').AsString:=Table1.FieldByName('FIO').AsString;
Table2.FieldByName('DOM').AsString:=Table1.FieldByName('DOM').AsString;
Table2.FieldByName('SALDO').AsFloat:=Table1.FieldByName('SALDO').AsFloat;
Table2.FieldByName('DOLG').AsFloat:=Table1.FieldByName('DOLG').AsFloat;
Table2.post;
Anatoly Podgoretsky (2008-03-28 22:04:00) [1]> Германн (28.03.2008 2:04:29) [29]
Это его проблемы.
Германн (2008-03-28 02:04:00) [2]Ну так объясните автору, что ему нужно читать книжки, чтобы понять смысл термина "набор данных" ака DataSet.
Anatoly Podgoretsky (2008-03-28 01:35:00) [3]Не так это было!
Некоторые шаманы сумели брать данные из наборов данных и поехало.
Выборка из датасета это надстройка практически в любом генераторе.
MsGuns (2008-03-27 20:49:00) [4]Автору сабжа надо открыть несколько великих индейских тайн:
Во-первых,
все-репорты в качестве вх.данных берут не "таблицы", а некий волшебный TDataSet, который может быть отображениемтаблицы БД, а может быть совершенно не похож ни на одну физическую таблицу БД, а содержать результат произвольной выборки из произвольного числа таблиц БД .
Во-вторых, в ентот самый датасет можно подсунуть самые разнообразные фиговины вместо выбранных полей, для чего у этого индейского артефакта имеются тайные рычаги вроде событий OnGetText или приблуды типа калькулируемых полей
В-третьих, древняя легенда индейского племени Акечукви гласит, что некоторые шаманы древности умели заставлять енти самые репорты выбирать данные не из всех полей датасетов, а только из тех, которые отображались в гридах.
Kolan (2008-03-27 15:35:00) [5]> ССЗБ
Хорошо есть сокр.ру :)
http://www.sokr.ru/?text=%D1%D1%C7%C1&where=abbr&exact=on
Johnmen (2008-03-27 15:33:00) [6]
> Kolan © (27.03.08 15:28) [23]
Вообще-то я про локальный фильтр. Ибо про запросы автору ещё рано...:)
Сергей М. (2008-03-27 15:31:00) [7]
> В моей программе FreeReport действительно берет все данные
> из одной единственной таблицы
Не из таблицы , а из набора данных.
И ты ССЗБ, если этот НД ты формируешь средствами TTable (или что у тебя там - не знаю, мне по барабану).
Kolan (2008-03-27 15:28:00) [8]> if Table1.FieldByName('PRINT').AsBoolean = True Then begin
> // если есть атрибут то
Можно как советовал[12] Johnmen © (27.03.08 15:01)сделать. Нужно просто составить запрос на выборку из table1 и добавить туда условие:WHERE PRINT
altatr (2008-03-27 15:26:00) [9]>Сергей М. © (27.03.08 15:14) [19]
>> altatr © (27.03.08 15:07) [16]
>> FreeReport в отчет запихивает данные из одной таблицы
>Не надо с умным видом пороть чушь)
Почему чушь? В моей программе FreeReport действительно берет все данные из одной единственной таблицы.
Palladin (2008-03-27 15:24:00) [10]гениально... следуй совету Коляна в [17], заодно TXXQuery для себя откроешь....
altatr (2008-03-27 15:21:00) [11]>Palladin © (27.03.08 15:05) [14]
>
>в таком случае еще проще добавить в таблицу флаг отвечающий за признак
>придурка...
Признак придурка в таблице есть.
Вот что происходить при нажатии кпопки:
По этому признаку
procedure TForm1.Button8Click(Sender: TObject);
begin
while not table2.Eof do table2.Delete; //чистим приемную таблицу
// ищем выделенные записи
while not table1.Eof do begin
if Table1.FieldByName('PRINT').AsBoolean = True Then begin // если есть атрибут то
Table2.Append;
Table2.FieldByName('FIO').AsString:=Table1.FieldByName('FIO').AsString;
Table2.FieldByName('DOM').AsString:=Table1.FieldByName('DOM').AsString;
Table2.FieldByName('SALDO').AsFloat:=Table1.FieldByName('SALDO').AsFloat;
Table2.FieldByName('DOLG').AsFloat:=Table1.FieldByName('DOLG').AsFloat;
Table2.Post;
end;
end;
frReport1.ShowReport; // открываем отчет в FreeReport
end;
Сергей М. (2008-03-27 15:14:00) [12]
> altatr © (27.03.08 15:07) [16]
> FreeReport в отчет запихивает данные из одной таблицы
Не надо с умным видом пороть чушь)
Palladin (2008-03-27 15:10:00) [13]
> а если потребуется ввести степень придурковатости? )
так степень придурковатость и будет флагом :) но по-хорошему, конечно, Колян прав :)
> А если в ней будет только ключевое поле откуда она возьмет
> все остальное?
> Фамилию , адрес? Будет по этому ключу искать в других таблицах?
>
ага, для этого реляционные отношения и SQL и придумали
Kolan (2008-03-27 15:10:00) [14]> А что это даст?
Так, ступай учи оператор SELECT, а только потом сюда за вопросами
altatr (2008-03-27 15:07:00) [15]>Сергей М. © (27.03.08 14:58) [10]
>За каким лешим копировать всю запись, если можно скопировать только ее
>первичный ключ ?
А что это даст? FreeReport в отчет запихивает данные из одной таблицы. А если в ней будет только ключевое поле откуда она возьмет все остальное?
Фамилию , адрес? Будет по этому ключу искать в других таблицах?
clickmaker (2008-03-27 15:06:00) [16]
> еще проще добавить в таблицу флаг отвечающий за признак
> придурка...
а если потребуется ввести степень придурковатости? )
Не, Колян прав, он умные книжки по УМЛ читал, он про нормальные формы знает )
Palladin (2008-03-27 15:05:00) [17]в таком случае еще проще добавить в таблицу флаг отвечающий за признак придурка...
Kolan (2008-03-27 15:02:00) [18]> Это копирует полностью все содержимое Table1 вTable2 ?
Нет, только то что в селекте
> У таблиц только структура одинаковая.
> А данные из первой во вторую будут запихиваться по отределенному
> признаку.
Имхо, правильно иметь 1 таблицу с такой структурой. А если тебе надо выделить в ней какието строки, то помещай их ключи в спец таблицу.
То етсь. Допустим имеем таблицу:
Т1
1 Вася
2 Гриша
3 Федя
И хотим пометить что гриша и федя придурки.
У тебя было:
У нас есть еще одна таблица Т2 точно такая же как Т1, и называется «придурки» и ты туда копировал данные:
Т1
1 Вася
2 Гриша
3 Федя
Т2 «Придурки»
1 Гриша
2 Федя
Как предлагается:
Заводишь еще одну таблицу, где храниш только коды придурков:
Т2 «Придурки»
2
3
Вот и все.
:)
Johnmen (2008-03-27 15:01:00) [19]За каким лешим вообще что-то копировать, если можно отфильтровать по желаемому атрибуту ?
Sergey13 (2008-03-27 15:00:00) [20]> [9] altatr © (27.03.08 14:55)
> Распечатывать отчет целиком всей таблицы я научился а как
> печятать выборочно незнаю
Немного доработанный вариант из [6] решит все твои проблемы. Иными словами - учи SQL. Или доучивай TTable - там можно отфильтровать данные по этому атрибуту.
ЗЫ: я тащусь насколько далеко может быть заданный вопрос от решения. 8-)