Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2011, 22:04   #1
tadalex
 
Регистрация: 03.09.2010
Сообщений: 8
По умолчанию Как объединить данные?

Как можно правильно сделать такое. Мне необходимо данные хранящиеся в IBDataSet - MemberSurname (фамилия) и MemberName (имя) отобразить в другой таблице или компоненте формы в виде объединенной информации - MemberSurname (фамилия) + MemberName (имя).
Использую Delphi XE, IB 2009.
tadalex вне форума Ответить с цитированием
Старый 13.02.2011, 00:37   #2
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Calculated Field.
Не доводилось слышать ?
Или Computed Columns...

Последний раз редактировалось asmodey1; 13.02.2011 в 00:42.
asmodey1 вне форума Ответить с цитированием
Старый 13.02.2011, 13:37   #3
tadalex
 
Регистрация: 03.09.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от asmodey1 Посмотреть сообщение
Calculated Field.
Не доводилось слышать ?
Или Computed Columns...
Про Calculated Field конечно доводилось. Про Computed Columns нет. Я олько познаю основы программирования БД, поэтому и задал вопрос, так как хоть и слышал, но не понимаю реализацию.
За ответ спалибо!
tadalex вне форума Ответить с цитированием
Старый 13.02.2011, 19:30   #4
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

В папочке интербэйса есть подпапочка DOC, там документация.
Откройте файл TUTORIAL.PDF из каталога TUTORIAL, в нем найдите раздел Creating tables, тема Computed columns...
asmodey1 вне форума Ответить с цитированием
Старый 13.02.2011, 22:22   #5
tadalex
 
Регистрация: 03.09.2010
Сообщений: 8
По умолчанию

К сожалению, каталога TUTORIAL а так же файла TUTORIAL.PDF в каталоге с установленной InterBase 2009 не нахожу. В папке DOC есть каталог INTERCLIENT в котором кроме *.html файлов ничего нет.
tadalex вне форума Ответить с цитированием
Старый 14.02.2011, 01:51   #6
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Цитата:
Computed columns
When you are creating a table, you can define columns whose value is based on the values of one or
more other columns in the table. The computation can include any arithmetic operations that are
appropriate to the datatypes of the columns. Open Tables.sql and look at the following column
definition for the Employee table:
full_name COMPUTED BY (last_name || ’, ’ || first_name)
The value of the full-name column consists of the value in the same row of the last_name column
plus a comma plus the value of the first_name column.
Look at the new_salary column of the Salary_history table.
new_salary COMPUTED BY (old_salary + old_salary * percent_change / 100)
To find the value of new_salary, InterBase multiplies the value of old_salary by the value of
percent_change, divides the result by 100, and adds that to the original value of old_salary.
Примеры оттуда же :
Код:
CREATE TABLE Employee
(
	emp_no          EMPNO NOT NULL PRIMARY KEY,
	first_name      FIRSTNAME NOT NULL,
	last_name       LASTNAME NOT NULL,
	phone_ext       VARCHAR(4),
	hire_date       DATE DEFAULT 'NOW' NOT NULL,
	dept_no         DEPTNO,
	job_code        JOBCODE NOT NULL,
	job_grade       JOBGRADE NOT NULL,
	job_country     COUNTRYNAME NOT NULL,
	salary          SALARY NOT NULL,
	full_name       COMPUTED BY (last_name || ', ' || first_name),

FOREIGN KEY (dept_no) 
	REFERENCES Department (dept_no),
FOREIGN KEY (job_code, job_grade, job_country) 
	REFERENCES Job (job_code, job_grade, job_country),

CHECK ( salary >= (SELECT min_salary FROM job WHERE
	Job.job_code = Employee.job_code AND
	Job.job_grade = Employee.job_grade AND
	Job.job_country = Employee.job_country) AND
	salary <= (SELECT max_salary FROM Job WHERE
		Job.job_code = Employee.job_code AND
		Job.job_grade = Employee.job_grade AND
		Job.job_country = Employee.job_country))
);

CREATE TABLE SALARY_HISTORY
(
	emp_no              EMPNO NOT NULL,
	change_date         DATE DEFAULT 'NOW' NOT NULL,
	updater_id          VARCHAR(20) NOT NULL,
	old_salary          SALARY NOT NULL,
	percent_change      DOUBLE PRECISION DEFAULT 0 NOT NULL CHECK (percent_change between -50 and 50),
	new_salary          COMPUTED BY (old_salary + old_salary * percent_change / 100),
	PRIMARY KEY (emp_no, change_date, updater_id),
	FOREIGN KEY (emp_no) REFERENCES employee (emp_no)
);

CREATE INDEX updaterx ON salary_history (updater_id);
CREATE DESCENDING INDEX changex ON salary_history (change_date);
COMMIT;

CREATE TABLE SALES(
	po_number       PONUMBER NOT NULL,
	cust_no         CUSTNO NOT NULL,
	sales_rep       EMPNO,
	order_status    VARCHAR(7) DEFAULT 'new' NOT NULL
		CHECK (order_status in ('new', 'open', 'shipped', 'waiting')),
	order_date      DATE DEFAULT 'now' NOT NULL,
	ship_date       DATE 
		CHECK (ship_date >= order_date OR ship_date IS NULL),
	date_needed     DATE
		CHECK (date_needed > order_date OR date_needed IS NULL),
	paid            CHAR DEFAULT 'n'
		CHECK (paid in ('y', 'n')),
	qty_ordered     INTEGER DEFAULT 1 NOT NULL
		CHECK (QTY_ORDERED >= 1),
	total_value     DECIMAL(9,2) NOT NULL
		CHECK (total_value >= 0),
	discount        FLOAT DEFAULT 0 NOT NULL
		CHECK (discount >= 0 AND discount <= 1),
	item_type       PRODTYPE,
	aged            COMPUTED BY (ship_date - order_date),

	PRIMARY KEY (po_number),
	FOREIGN KEY (cust_no) REFERENCES customer (cust_no),
	FOREIGN KEY (sales_rep) REFERENCES employee (emp_no),

	CHECK (NOT (order_status = 'shipped' AND ship_date IS NULL)),

	CHECK (NOT (order_status = 'shipped' AND
			EXISTS (SELECT on_hold FROM customer
					WHERE customer.cust_no = sales.cust_no
					AND customer.on_hold = '*'))));

CREATE INDEX needx ON sales (date_needed);
CREATE INDEX salestatx ON sales (order_status, paid);
CREATE DESCENDING INDEX qtyx ON sales (item_type, qty_ordered);
COMMIT;
EXIT;

Последний раз редактировалось asmodey1; 14.02.2011 в 01:55.
asmodey1 вне форума Ответить с цитированием
Старый 14.02.2011, 06:57   #7
tadalex
 
Регистрация: 03.09.2010
Сообщений: 8
По умолчанию

Большое спасибо!
Буду разбираться.
tadalex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как объединить таблицы? Sny SQL, базы данных 0 09.10.2010 00:20
Как объединить ячейки в Stringgrid??? Ser_arm Помощь студентам 1 18.04.2010 09:16
Как объединить массивы pancho Общие вопросы Delphi 10 20.11.2009 22:00
Скажите как объединить ячейки alex_base БД в Delphi 2 08.11.2007 20:07
Как объединить файлы? CMP Помощь студентам 6 07.05.2007 21:52