Помощь - Поиск - Пользователи - Календарь
Полная версия: Создание таблиц Sql
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
YurKaluga
Проблема вот в чем - создаю таблицу с помощью Query:
Код

 Query1.SQL.Text:='Create table Teams '+
                 '(Code            Autoinc,'+
                 ' Name            character(50),'+
                 ' Country         SmallInt DEFAULT 1,'+
                 ' City            SmallInt,'+
                 ' Trainer         character(150),'+
                 ' Glasses         SmallInt DEFAULT 0,'+
                 ' Primary Key (Code))';
 Query1.ExecSQL;

Таблица создается, но значения по-умолчанию не цепляются. :fire:
Почему?
Может знаете?
hiv
У каждой БД свой диалект SQL. Что у тебя за БД?
YurKaluga
Я из Delphi пытаюсь создать таблицу Paradox для BDE.
hiv
Попробуй значения по умолчанию поставить в одинарные кавычки:
Код
default '0';

Может поможет.

PS: Смотри справку localSQL.hlp в каталоге где стоит BDE.
YurKaluga
Ну, как бы в кавычки я могу взять только в двойные - проскакивает без ошибок, но не помогает. А в хелпе про это ни слова!
hiv
Матчасть учить надо: во всех паскалях от борланд в том числе и в Delphi пишется так
writeln('You''ll'); \\ это будет You'll
YurKaluga
Я и говорю, двойные кавычки не помогают. Сам попробуй! Может разница в BDE?
hiv
В одинарных пробуй (внимательнее мой предыдущий пост посмотри)
YurKaluga
Да пробовал я. В нете еще встречается конструкция типа NOT NULL перед DEFAULT, оно обязательно?
hiv
обычно конечно их вместе используют. попробуй, но наверно дело не в этом.
YurKaluga
Да не выходит каменный цветок!!!
angry.gif
hiv
Выложи исходники - я попробую помучиться...
ЗЫ: Наверное все программисты отчасти мазохисты. smile.gif
YurKaluga
Да, собственно, весь исходник в первом сообщении.
Таблица создается. Потом я смотрю ее структуру в Database Desktop. Там есть окошко Default value, куда можно вписать значение по умолчанию для каждого поля. Но оно пустое.
При создании таблицы в Database Desktop в это поле вписываешь значение и оно запоминается где-то. При вставке новой записи в таблицу эти значения подставляются автоматически. То же самое мне нужно сделать программно.
У меня в базе есть таблицы с кучей полей, и при вставке новой записи как-то не хочется прописывать их значения - макаронный код получается.
hiv
Я с BDE давно не работаю - и как ты создаешь свою БД не знаю. Одного SQL запроса там мало - шли исходники полностью - тогда буду смотреть...
YurKaluga
Цитата(hiv @ 9.09.05 12:03)
шли исходники полностью - тогда буду смотреть...

А исходники чего нужны? Я что-то не пойму. Мне же нужно всего-то - разобраться, как создавать таблицу.
hiv
Так ты говоришь что этим SQL скриптом ты ее создал. У меня просто так не создается, нужно либо альясы прописывать, либо еще какие-то телодвижения делать чтобы файл с таблицей создавать. Как делаешь ты - я не знаю. У меня пока файл парадокса создать не удается. Только DBASE DBF.
YurKaluga
Код

 Query1.DatabaseName:=ExtractFilePath(Application.ExeName);
 Query1.SQL.Text:='Create table Teams '+
                 '(Code            Autoinc,'+
                 ' Condition       character(1),'+
                 ' FullName        character(200),'+
                 ' Name            character(50),'+
                 ' Country         SmallInt default 1,'+
                 ' City            SmallInt,'+
                 ' Chief           character(150),'+
                 ' Trainer         character(150),'+
                 ' Memo            Blob(200,1),'+
                 ' Glasses         SmallInt default 0,'+
                 ' Primary Key (Code))';
 Query1.ExecSQL;


На сколько я помню, файл Paradox создается по-умолчанию (поэтому я не указываю расширение после имени таблицы), а чтобы создался DBASE нужно как-то по другому объявлять имя.
Вместо Alias я обычно использую DatabaseName, так проще - не нужно после создания базы прописывать псевдонимы. Установил на другую машину, указал путь к базе и все... Плюй в потолок.
А делаю я следующее: бросаю на пустую форму TQuery & TButton и в обработчике нажатия кнопки пишу этот код. Никакие св-ва у компонентов не меняю. Судя по всяким help'ам все должно работать. В принципе и не ругается. Но и не делает того, что обещано
hiv
Блин изврат какой.... не получается... там даже не все определения ALTER TABLE есть... Выкинь BDE и работай с нормальными СУБД (хотябы Interbase, Firebird). Там для создания БД нужно просто скриптик запустить или команду дать (что из Дельфей тоже можно сделать через WinExec)
YurKaluga
Да фигня в том, что программа уже написана, база готова. Я сначала делал копирование эталонных таблиц, но при копировании куда-то деваются индексы, т.е. поле есть, написано, что оно индексное, а индексов нет. А еще неудобно за собой таскать папку с эталонами. Поэтому и решил таблички создавать из программы. А переписывать на другую СУБД уже поздно - в программе одних форм уже штук 40 и почти на каждой есть Query или Table и не по-одной.
Плюс, программа работает с локальной БД, так что ставить вместе с ней что-то серьезное не серьезно. Есть конечно задумка переписать на сервер, но неохота - слишком много лопатить прийдется.
Ладно, спасибо за возню со мной. Буду думать что-нибудь еще.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.