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

Какие таблицы у тебя? FoxPro?
Что нужно сделать: создать новую таблицу или изменить существующую?
...
Рейтинг: 0 / 0
Как это сделать?
    #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
Как это сделать?
    #32225390
ab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ab
Гость
Спасибо...
НЕ совсем понял...
Но сейчас буду пробовать...
...
Рейтинг: 0 / 0
Как это сделать?
    #32225400
ab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ab
Гость
БД у меня помоему из ALTA VISTA --- а потом они будут использоваться C++ Builder(om)...
А CREATE TABLE я уже как только не пробовал...
Может сейчас с поощью советов srgb что-нибудь получиться!!!
...
Рейтинг: 0 / 0
Как это сделать?
    #32225447
ab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ab
Гость
Я наверное вообще отупел...
Но...
Извини, я чуть-чуть неправильно объяснил...
Мне в таблицу CN нужно просто добавить 6 полей в Делфи и сохранить под названием TR...
И так каждый раз повторять...

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

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

В общем, если хоть кто-то что-то понял, просьба помочь...
...
Рейтинг: 0 / 0
Как это сделать?
    #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
Как это сделать?
    #32225547
ab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ab
Гость
У меня сами БД (их файлы, ну создавлись они так) --- ReadOnly...
Поэтому я хочу загрузить таблицу, сохранить её под другим именем, потом снова загрузить и добавить свои пустые поля...
...
Рейтинг: 0 / 0
Как это сделать?
    #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
Как это сделать?
    #32225636
Алексей_S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл написать, что для полноты картины, сначала нужно:
copyfile('c:\star.dbf','c:\tmp.dbf',false);
Это так на всякий случай :))
...
Рейтинг: 0 / 0
Как это сделать?
    #32226035
ab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ab
Гость
Всё гениальное --- просто!!!
Всё просто идеально фунциклюе!!!

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


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