Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как это сделать? / 16 сообщений из 16, страница 1 из 1
01.08.2003, 10:32
    #32224666
ab
ab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
У меня задача...
Есть 2 таблицы (.dbf) CN и TR.
Структура TR такая же как и CN + 6 полей.
Эти 6 полей приходится постоянно вручную добавлять в CN таблицу.
Эти поля должны быть пустыми.
Мне необходимо с помощью Делфи сделать так, чтобы автоматически (нажав на кнопочку) 6 полей с названиями из TR(постоянно одинаковые) добавились в таблицу CN.
Эти таблицы read-only.
Как мне используя TQuery и SQL запросы можно это реализовать???
Может есть какой-либо более простой способ???
...
Рейтинг: 0 / 0
01.08.2003, 12:39
    #32224902
ab
ab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
Я над этим уже какой день бьюсь!
А ведь это должно быть по идее очень просто!
Ну подскажите, хоть какие-нибудь правильные sql запросы в Tquery!
Как там можно создать новую таблицу? Добавить новые поля?
CREATE TABLE и др. у меня просто не фурычат...
С помощью QueryX.FieldDefs.AddFieldDef.XXX тоже ничего не получаеться...
Кто этим занимался --- помогите!!!
...
Рейтинг: 0 / 0
01.08.2003, 13:17
    #32224970
oleg_e
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
Для добавления полей ипользуй ALTER TABLE ADD...
...
Рейтинг: 0 / 0
01.08.2003, 13:30
    #32224996
ab
ab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
ALTER TABLE я знаю... -- но опять же он мне выдаёт ошибку связанную толи с хендлом толи с индексом...
Если ты писал сам что-то --- напиши мне как полностью и правильно..
Я смотрю в книгах и делаю также -- а он ругается --- даже на самое простое...
...
Рейтинг: 0 / 0
01.08.2003, 15:10
    #32225182
DraM_sS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
А я воспользовался на terry.ru компонентами не использующими bde только регистрацию требуют - уроды
...
Рейтинг: 0 / 0
01.08.2003, 15:25
    #32225218
ab
ab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
Да terry.ru не катит...
Мне надо именно с TQuery и SQL ...
Ну неужели здесь никто ничего подобного не делал...
Ну покажите как у вас это получилось...
Ну хоть покажите как добавлять с помощью Add...
И вообще, у кого-то может есть свой проект на эту тему --- ну не жадничайте, скиньте на [email=]gis98@ukr.net ...
PLEEEEEEEEEEEEEZZZZZZZZZZZZZZZZEEEEEEEEZZEEEZZEEZE.....................
...
Рейтинг: 0 / 0
01.08.2003, 17:23
    #32225373
oleg_e
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
Действительно ALTER TABLE не работает! :-(
А почему не работает CREATE TABLE? Какую ошибку показывает?

Какие таблицы у тебя? FoxPro?
Что нужно сделать: создать новую таблицу или изменить существующую?
...
Рейтинг: 0 / 0
01.08.2003, 17:24
    #32225375
srgb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
с посощью database desktopa - поставляется с Делфями - надо создать пустую таблицу с заимствованием структуры из TR (кнопка Borrow...) + добавить те 6 новых полей - делается очень легко (тип поля выбирается из списка)/// После всего этого дела полученную таблицу сохранить и хранить - это шаблон - CN_NEW!

Когда надо сделать твою процедуру - копируеш шаблон в другую табоицу (можно даже проводником - она еще пустая) - получаем из CN_NEW новый CN - тоже пустой (это можне сделать также с помощбю desktopa)

А потом в делфях в Querry.SQL пишем:

insert into CN
select TR.*,0,0,0,0,0,0 from TR;

и все!

но вместо 0 можно писать "" - если поле данного типа - character/// или null
-----------------------все---------------
...
Рейтинг: 0 / 0
01.08.2003, 17:38
    #32225390
ab
ab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
Спасибо...
НЕ совсем понял...
Но сейчас буду пробовать...
...
Рейтинг: 0 / 0
01.08.2003, 17:44
    #32225400
ab
ab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
БД у меня помоему из ALTA VISTA --- а потом они будут использоваться C++ Builder(om)...
А CREATE TABLE я уже как только не пробовал...
Может сейчас с поощью советов srgb что-нибудь получиться!!!
...
Рейтинг: 0 / 0
01.08.2003, 18:42
    #32225447
ab
ab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
Я наверное вообще отупел...
Но...
Извини, я чуть-чуть неправильно объяснил...
Мне в таблицу CN нужно просто добавить 6 полей в Делфи и сохранить под названием TR...
И так каждый раз повторять...

И поэтому когда я в Делфи пишу...
Код: plaintext
insert into CN select NEW.* from NEW; 

NEW - у меня таблица с 6 пустыми полями...
У меня ничего не происходит, а что должно произойти я непонимаю...
Оно что ли должно добавить эти поля и сохранить в CN?...
Так она же у меня read-only...

В общем, если хоть кто-то что-то понял, просьба помочь...
...
Рейтинг: 0 / 0
01.08.2003, 19:22
    #32225468
Дмитрий Мыльников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
ну и что же ты хочешь получить, если ты пытаешся вставить в таблицу пустой запрос?!!! Сколько он у тебя записей возвращает? Нисколько! А тогда откуда взять информацию о структуре таблицы?!!!

Короче, почитай help по LocalSQL, который идёт вместе с BDE, обычно лежит в том же каталоге, где стоит BDE. Он так и называется localSQL.
Если в поиске набрать create table, то будет выдан следующий текст:
=========================
Creates a table.

CREATE TABLE table_reference (column_definition [, column_definition,...] [, primary_key_constraint])

Description

Use the CREATE TABLE statement to create a dBASE or Paradox table, define its columns, and define a primary key constraint.

The table name reference for CREATE TABLE must comply with the rules described in the section on naming conventions. Table names with embedded spaces must be enclosed in quotation marks.

Column definitions consist of a comma-separated list of combinations of column name, data type, and (if applicable) dimensions. The list of column definitions must be enclosed in parentheses. The number and type of dimensions that must be specified varies with column type. See the section on defining column types for specific syntax of all supported column types.

Use the PRIMARY KEY (or CONSTRAINT) keyword to create a primary index for the new table.The following statement creates a Paradox table with a PRIMARY KEY constraint on the LAST_NAME and FIRST_NAME columns:

CREATE TABLE "employee.db"

(
last_name CHAR(20),
first_name CHAR(15),
salary NUMERIC(10,2),
dept_no SMALLINT,
PRIMARY KEY (last_name, first_name)
)

An alternate syntax for creating a primary key constraint is using the CONSTRAINT keyword. While Paradox primary indexes do not have names, an arbitrary name needs to be provided to satisfy the CONSTRAINT keyword need for a token name.

CREATE TABLE "employee.db"

(
last_name CHAR(20),
first_name CHAR(15),
salary NUMERIC(10,2),
dept_no SMALLINT,
CONSTRAINT z PRIMARY KEY (last_name, first_name)
)

Indicate whether the table is a Paradox or dBASE table by specifying the file extension when naming the table:

".DB" for Paradox tables
".DBF" for dBASE tables

If you omit the file extension for a local table name, the table created is the table type specified in the Default Driver setting in the System INIT page of the BDE Administrator utility. When specifying a file extension, the table name reference for CREATE TABLE must be enclosed in quotation marks.

Column definitions based on domains are not supported. Primary keys are the only form of constraint that can be defined with CREATE TABLE.

Note To create a table with columns that have non-alphanumeric characters or spaces in the column name, you must enclose the column name in quotation marks and prefix the quoted column name with the table name in quotes.

CREATE TABLE "abc.db" A

(
ID CHAR(3),
"abc.db"."funny name" CHAR(10)
)
=====================
остальное смотри сам. Только учти, что такие запросы нужно запускать не через Querie.Open, а через Querie.ExecSQL, поскольку никаких наборов данных ни не возвращают. Естественно, что и Close ему потом делать не нужно.

Удачи!

Да, кстати, при использовании запроса данная таблица не должна быть открыта в другом DataSet'е, иначе BDE тебя пошлёт. То, что у тебя сами таблицы ReadOnly - я так понимаю это проставлено тоже в DataSet'е? Поскольку если это флаг на файле, то, опять же, BDE тебя пошлёт.
...
Рейтинг: 0 / 0
02.08.2003, 09:20
    #32225547
ab
ab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
У меня сами БД (их файлы, ну создавлись они так) --- ReadOnly...
Поэтому я хочу загрузить таблицу, сохранить её под другим именем, потом снова загрузить и добавить свои пустые поля...
...
Рейтинг: 0 / 0
02.08.2003, 17:02
    #32225634
Алексей_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
Откуда такие сведения что ALTER TABLE не работает в локальном SQL ???
Вот один из кусков моего проекта (немного упрощенный):

QueryTmp.Close;
QueryTmp.SQL.Text := 'ALTER TABLE "tmp.dbf" ADD DataTek Date, ADD TypStr CHAR(1), ADD Coment CHAR(100)';
QueryTmp.ExecSql;

Все работает на ура, в чем проблемы ?
Зачем мучаться с какими то шаблонами и прочим ...
...
Рейтинг: 0 / 0
02.08.2003, 17:09
    #32225636
Алексей_S
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
Забыл написать, что для полноты картины, сначала нужно:
copyfile('c:\star.dbf','c:\tmp.dbf',false);
Это так на всякий случай :))
...
Рейтинг: 0 / 0
04.08.2003, 10:20
    #32226035
ab
ab
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это сделать?
Всё гениальное --- просто!!!
Всё просто идеально фунциклюе!!!

Большое спасибо Алексей_S!!!
Всем кто помогал!!!
УРА SQL.RU !!!
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как это сделать? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]