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

Вниз

Как скопировать целиком строку в таблице.   Найти похожие ветки 

 
altatr ©   (2008-03-27 13:13) [0]

Имеются две полностью одинаковые таблицы. 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;


 
clickmaker ©   (2008-03-27 13:17) [1]

BatchMove


 
Сергей М. ©   (2008-03-27 13:17) [2]

Для этой цели вместо Append имеется Insert/AppendRecord
Да и циклы пока еще не упразднили.


 
Kolan ©   (2008-03-27 13:18) [3]

Это, а сделать
INSERT INTO Table1
 SELECT FROM Table2


Нельзя?


 
altatr ©   (2008-03-27 14:20) [4]

>Kolan ©   (27.03.08 13:18) [3]
>
>Это, а сделать
>INSERT INTO Table1
>SELECT FROM Table2
>
>Нельзя?

Это копирует полностью все содержимое Table1 вTable2 ?


 
altatr ©   (2008-03-27 14:29) [5]

>clickmaker ©   (27.03.08 13:17) [1]
>
>BatchMove
>

Это:

 Table2.BatchMove(Table1,batCopy);

скопирует все из Table1 вTable2, а мне надо допустим только одну строку.


 
Sergey13 ©   (2008-03-27 14:31) [6]

> [4] altatr ©   (27.03.08 14:20)
> Это копирует полностью все содержимое Table1 вTable2 ?

А если дополнить идею Коляна
INSERT INTO Table1
SELECT FROM Table2
where id=:id


> Имеются две полностью одинаковые таблицы. Table1 и Table2
Уже настораживает. Зачем?


 
altatr ©   (2008-03-27 14:40) [7]

>Sergey13 ©   (27.03.08 14:31) [6]
>
> > [4] altatr ©   (27.03.08 14:20)
> > Имеются две полностью одинаковые таблицы. Table1 и Table2
>Уже настораживает. Зачем?
>

У таблиц только структура одинаковая.
А данные из первой  во вторую будут запихиваться по отределенному признаку.
Ну например я запись выделил какую нибудь кнопку нажал и вся строка целиком скопировалась в Table2


 
Sergey13 ©   (2008-03-27 14:41) [8]

> [7] altatr ©   (27.03.08 14:40)
> Ну например я запись выделил какую нибудь кнопку нажал и
> вся строка целиком скопировалась в Table2

А если например атрибут какой поменять в ОДНОЙ таблице? Не подойдет?


 
altatr ©   (2008-03-27 14:55) [9]

Подойдет, если меня ктонибудь научит как сделать так чтобы при печати отчета с помощью FreeReport она умела видеть этот атрибут и брала для печати только записи с этим атрибутом. Распечатывать отчет целиком всей таблицы я научился а как печятать выборочно незнаю... Вот и решил: Записи с атрибутом копировать в другую таблицу а ее уже в FreeReport распечатать целиком...


 
Сергей М. ©   (2008-03-27 14:58) [10]


> выделил какую нибудь кнопку нажал и вся строка целиком скопировалась
> в Table2


За каким лешим копировать всю запись, если можно скопировать только ее первичный ключ ?


 
Sergey13 ©   (2008-03-27 15:00) [11]

> [9] altatr ©   (27.03.08 14:55)
> Распечатывать отчет целиком всей таблицы я научился а как
> печятать выборочно незнаю

Немного доработанный вариант из [6] решит все твои проблемы. Иными словами - учи SQL. Или доучивай TTable - там можно отфильтровать данные по этому атрибуту.

ЗЫ: я тащусь насколько далеко может быть заданный вопрос от решения. 8-)


 
Johnmen ©   (2008-03-27 15:01) [12]

За каким лешим вообще что-то копировать, если можно отфильтровать по желаемому атрибуту ?


 
Kolan ©   (2008-03-27 15:02) [13]

> Это копирует полностью все содержимое Table1 вTable2 ?

Нет, только то что в селекте&#133


> У таблиц только структура одинаковая.
> А данные из первой  во вторую будут запихиваться по отределенному
> признаку.

Имхо, правильно иметь 1 таблицу с такой структурой. А если тебе надо выделить в ней какието строки, то помещай их ключи в спец таблицу.

То етсь. Допустим имеем таблицу:
Т1
1 Вася
2 Гриша
3 Федя


И хотим пометить что гриша и федя придурки.

У тебя было:
У нас есть еще одна таблица Т2 точно такая же как Т1, и называется «придурки» и ты туда копировал данные:

Т1
1 Вася
2 Гриша
3 Федя


Т2 «Придурки»
1 Гриша
2 Федя


Как предлагается:
Заводишь еще одну таблицу, где храниш только коды придурков:
Т2 «Придурки»
2
3


Вот и все.
:)


 
Palladin ©   (2008-03-27 15:05) [14]

в таком случае еще проще добавить в таблицу флаг отвечающий за признак придурка...


 
clickmaker ©   (2008-03-27 15:06) [15]


> еще проще добавить в таблицу флаг отвечающий за признак
> придурка...

а если потребуется ввести степень придурковатости? )
Не, Колян прав, он умные книжки по УМЛ читал, он про нормальные формы знает )


 
altatr ©   (2008-03-27 15:07) [16]

>Сергей М. ©   (27.03.08 14:58) [10]
>За каким лешим копировать всю запись, если можно скопировать только ее
>первичный ключ ?

А что это даст? FreeReport в отчет запихивает данные из одной таблицы. А если в ней будет только ключевое поле откуда она возьмет все остальное?
Фамилию , адрес? Будет по этому ключу искать в других таблицах?


 
Kolan ©   (2008-03-27 15:10) [17]

> А что это даст?

Так, ступай учи оператор SELECT, а только потом сюда за вопросами&#133


 
Palladin ©   (2008-03-27 15:10) [18]


> а если потребуется ввести степень придурковатости? )

так степень придурковатость и будет флагом :) но по-хорошему, конечно, Колян прав :)


> А если в ней будет только ключевое поле откуда она возьмет
> все остальное?
> Фамилию , адрес? Будет по этому ключу искать в других таблицах?
>

ага, для этого реляционные отношения и SQL и придумали


 
Сергей М. ©   (2008-03-27 15:14) [19]


> altatr ©   (27.03.08 15:07) [16]


> FreeReport в отчет запихивает данные из одной таблицы


Не надо с умным видом пороть чушь)


 
altatr ©   (2008-03-27 15:21) [20]

>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;


 
Palladin ©   (2008-03-27 15:24) [21]

гениально... следуй совету Коляна в [17], заодно TXXQuery для себя откроешь....


 
altatr ©   (2008-03-27 15:26) [22]

>Сергей М. ©   (27.03.08 15:14) [19]
>> altatr ©   (27.03.08 15:07) [16]
>> FreeReport в отчет запихивает данные из одной таблицы
>Не надо с умным видом пороть чушь)

Почему чушь? В моей программе FreeReport действительно берет все данные из одной единственной таблицы.


 
Kolan ©   (2008-03-27 15:28) [23]

> if Table1.FieldByName("PRINT").AsBoolean = True Then begin
> // если есть атрибут то

Можно как советовал [12] Johnmen ©   (27.03.08 15:01) сделать. Нужно просто составить запрос на выборку из table1 и добавить туда условие: WHERE PRINT


 
Сергей М. ©   (2008-03-27 15:31) [24]


> В моей программе FreeReport действительно берет все данные
> из одной единственной таблицы


Не из таблицы , а из набора данных.
И ты ССЗБ, если этот НД ты формируешь средствами  TTable (или что у тебя там - не знаю, мне по барабану).


 
Johnmen ©   (2008-03-27 15:33) [25]


> Kolan ©   (27.03.08 15:28) [23]

Вообще-то я про локальный фильтр. Ибо про запросы автору ещё рано...:)


 
Kolan ©   (2008-03-27 15:35) [26]

> ССЗБ

Хорошо есть сокр.ру :)&#133
http://www.sokr.ru/?text=%D1%D1%C7%C1&where=abbr&exact=on


 
MsGuns ©   (2008-03-27 20:49) [27]

Автору сабжа надо открыть несколько великих индейских тайн:
Во-первых,
все-репорты в качестве вх.данных берут не "таблицы", а некий волшебный TDataSet, который может быть отображением таблицы БД, а может быть совершенно не похож ни на одну физическую таблицу БД, а содержать результат произвольной выборки из произвольного числа таблиц БД .
Во-вторых, в ентот самый датасет можно подсунуть самые разнообразные фиговины вместо выбранных полей, для чего у этого индейского артефакта имеются тайные рычаги вроде событий OnGetText или приблуды типа калькулируемых полей
В-третьих, древняя легенда индейского племени Акечукви гласит, что некоторые шаманы древности умели заставлять енти самые репорты выбирать данные не из всех полей датасетов, а только из тех, которые отображались в гридах.


 
Anatoly Podgoretsky ©   (2008-03-28 01:35) [28]

Не так это было!
Некоторые шаманы сумели брать данные из наборов данных и поехало.
Выборка из датасета это надстройка практически в любом генераторе.


 
Германн ©   (2008-03-28 02:04) [29]

Ну так объясните автору, что ему нужно читать книжки, чтобы понять смысл термина "набор данных" ака DataSet.


 
Anatoly Podgoretsky ©   (2008-03-28 22:04) [30]

> Германн  (28.03.2008 2:04:29)  [29]

Это его проблемы.



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

Форум: "Начинающим";
Текущий архив: 2008.04.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.042 c
2-1206527869
Gavrila
2008-03-26 13:37
2008.04.20
PopupMenu - определить какой Item вызвал событие OnClik


15-1204284088
Dmitry S
2008-02-29 14:21
2008.04.20
Анонимный доступ к шарам Win2k3


15-1204730152
dmitry_12_08_74
2008-03-05 18:15
2008.04.20
Требования к курсорам для совместимости с разными версиями Window


15-1204645484
Kerk
2008-03-04 18:44
2008.04.20
Скорость сетевого подключения


2-1206368361
AlexeyMir
2008-03-24 17:19
2008.04.20
Кеширование в таблице Firebird





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