Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.25;
Скачать: CL | DM;

Вниз

ALTER TABLE в Delphi   Найти похожие ветки 

 
исследователь   (2007-10-17 17:58) [0]

Как правильно выполнить SQL-запрос с ним? Вот мне надо изменить размер поля. Пишу в ADOQuery

ALTER TABLE TEMP.DBF ALTER POLE CHAR(8)

выдает ошибку


 
Sergey13 ©   (2007-10-17 18:01) [1]

> [0] исследователь   (17.10.07 17:58)
> выдает ошибку

Секретную? Азбукой Морзе?


 
tesseract ©   (2007-10-17 18:20) [2]


> ADOQuery


А open используешь или ExecSQl ?


 
Правильный_Вася   (2007-10-17 19:04) [3]

уменьшать нельзя


 
isasa ©   (2007-10-17 19:42) [4]

TADOCommand ?


 
Anatoly Podgoretsky ©   (2007-10-17 20:59) [5]

Может у человека и базы то нет.


 
исследователь   (2007-10-18 10:23) [6]

Использую ExecSQL, конечно же


 
ЮЮ ©   (2007-10-18 10:33) [7]

> ALTER POLE

Не того поля ягодка, однако :)


 
исследователь   (2007-10-18 10:33) [8]


> Sergey13 ©   (17.10.07 18:01) [1]

Ошибка такая:
[Microsoft][Драйвер ODBC dBASE] Операция не поддерживается для объектов этого типа.

> Правильный_Вася   (17.10.07 19:04) [3

Я поле УВЕЛИЧИВАЮ

> isasa ©   (17.10.07 19:42) [4]

какая, к черту, разница, если я использую ExecSQL?

> Anatoly Podgoretsky ©   (17.10.07 20:59) [5]

за отсутствием БД я не имею права применять ALTER TABLE на отдельной таблице?


 
исследователь   (2007-10-18 10:34) [9]


> Не того поля ягодка, однако :)

смеяться после слова лопата?


 
ЮЮ ©   (2007-10-18 10:42) [10]

> смеяться после слова лопата?

Ну извини. Ожидал увидеть FIELD или COLUMN, увидел POLE

В Local SQL тоже доступны только

DROP [COLUMN] | ADD [COLUMN]  

Может неспроста?


 
исследователь   (2007-10-18 10:43) [11]


> В Local SQL тоже доступны только DROP [COLUMN] | ADD [COLUMN]
>  

Это я прочел, в надежде что брехня

Вопрос - что делать? Как верно составить запрос?


 
VICTOR_   (2007-10-18 10:53) [12]


> Вопрос - что делать? Как верно составить запрос?
>

Как вариант
1. Сбросить данные во временную таблицу
2. Изменить структуру основной таблицы
3. Сбросить данные в основную таблицу
4. Удалить временную таблицу


 
ЮЮ ©   (2007-10-18 10:55) [13]

> 2. Изменить структуру основной таблицы

2.a Удалить столбец POLE
2.b Добавить столбец POLE CHAR(8)


 
исследователь   (2007-10-18 10:56) [14]


> ЮЮ ©   (18.10.07 10:55) [13]

Это я уже и сам понял. Вопрос в другом: может у меня синтаксис неверен? Напишите, плз, эти две команды.


 
Правильный_Вася   (2007-10-18 10:57) [15]

выкинуть одбц


 
исследователь   (2007-10-18 10:59) [16]


> Правильный_Вася   (18.10.07 10:57) [15]

господи, как Вы достали.


 
ЮЮ ©   (2007-10-18 11:04) [17]

Даже в MS SQL (до 6.0 или 6.5) приходилось именно так [12] изменять структуру таблиц.  

>Это я уже и сам понял. Вопрос в другом: может у меня синтаксис неверен? Напишите, плз, эти две команды.

это и в хелпе есть.
Кстати TEMP.DBF тоже гн смотрится в запросе

ALTER TABLE TEMP DROP POLE , ADD POLE CHAR(8)
или
ALTER TABLE "TEMP.DBF" DROP POLE , ADD POLE CHAR(8)


 
исследователь   (2007-10-18 11:09) [18]

Спс, сейчас попробую


 
исследователь   (2007-10-18 11:20) [19]

Хрен там!

[Microsoft][Драйвер ODBC dBASE] Ошибка синтаксиса в инструкции ALTER TABLE.


 
Правильный_Вася   (2007-10-18 11:22) [20]

ёжики плакали, но продолжали лезть на кактус

выкинь одбц!


 
исследователь   (2007-10-18 11:23) [21]

умничка.


 
Sergey13 ©   (2007-10-18 11:26) [22]

> [19] исследователь   (18.10.07 11:20)

Может таки надо добавить COLUMN?
ALTER TABLE TEMP DROP COLUMN POLE , ADD COLUMN POLE CHAR(8)


 
ЮЮ ©   (2007-10-18 11:26) [23]

> Хрен там!

Ну так покажи ту хренотень, что выполняешь :)


 
исследователь   (2007-10-18 11:30) [24]

Итак, я разбил запрос на два запроса даже - результат один. Добавил COLUMN - та же ошибка.

Лирическое отступление: в таблице поле называется TIME, но оно суть строковое и содержит инфу такого типа: 120346, что означает 12 часов три минуты 46 секунд :). Таблицы генерятся прогой, к которой я не имею никакого доступа. А вот для улучшения удобочитаемости мне необходимо пройтись по всем полям TIME и сделать время как строчку с двоеточием. Но этио не выходит, получается лишь 12:03:, то есть играет роль ограничение в 6 символов. Посему и надо мне расширить поле до 8.


 
исследователь   (2007-10-18 11:31) [25]

Хренотень, которую я выполняю:


  qr.Close;
  qr.SQL.Clear;
  qr.SQL.Add("ALTER TABLE TEMP DROP COLUMN TIME");
  qr.ExecSQL;
  // решил даже разделить для верности :)))
  qr.Close;
  qr.SQL.Clear;
  qr.SQL.Add("ALTER TABLE TEMP ADD TIME CHAR(8)");
  qr.ExecSQL;


 
Маша Шрайбер ©   (2007-10-18 11:43) [26]

А если "TIME" или [TIME] ?
Но мне не понятно, а зачем вообще этой ерундой заниматься?


 
ЮЮ ©   (2007-10-18 11:43) [27]

Посему и надо мне расширить поле до 8.

Какой смысл, если сторонняя прога будет по-прежнему писать в тои же, "неудобном" для тебя формате. Будещь постоянно бегать и менять?

А уверен, что "та прога" сможет пототм работать с измененными тобой данными?

"улучшения удобочитаемости" нужно в "той проге" или уже в твоей?


 
исследователь   (2007-10-18 11:47) [28]

С "TIME" запахало. НО вот ошибка теперь более веселая (пробовал даже с CHAR(100)) :
[Microsoft][Драйвер ODBC dBASE] Размер поля недостаточен, чтобы принять добавляемые данные.  Попробуйте вставить меньшее количество данных.


 
исследователь   (2007-10-18 11:48) [29]


> "улучшения удобочитаемости" нужно в "той проге" или уже
> в твоей?

исключительно моей. Та не берет на вход ничего, только выплевывает свою срань :)


 
Правильный_Вася   (2007-10-18 11:50) [30]


> ALTER TABLE TEMP DROP COLUMN TIME"

интересно, откуда ты возьмешь данные для нового поля?


 
исследователь   (2007-10-18 11:52) [31]


> интересно, откуда ты возьмешь данные для нового поля?

из генерирующей программы появляются на свет Божий таблицы, и происходит чудо великое: в ADOTable грузится таблица, данные с нее берутся нужные, и в TEMP.DBF пишутся. По прошествии Великого чуда Записи, отображается TEMP.DBF в грешном нашем DBGrid"е


 
ЮЮ ©   (2007-10-18 11:52) [32]

> НО вот ошибка теперь более веселая (пробовал даже с CHAR(100)
> ) :
> [Microsoft][Драйвер ODBC dBASE] Размер поля недостаточен,
> чтобы принять добавляемые данные.  Попробуйте вставить
> меньшее количество данных.


Теперь впал в другую крайность? Только ошибку даещь, без намека на то, что её вызвало :)

>исключительно моей. Та не берет на вход ничего, только выплевывает свою срань :)
Тогда оставь структуру таблицы в покое. Ничто не мешает показывать на клиенте вовсе не то, что действительно хранится в базе


 
ЮЮ ©   (2007-10-18 11:56) [33]

в ADOTable грузится таблица, данные с нее берутся нужные, и в TEMP.DBF пишутся. По прошествии Великого чуда Записи, отображается TEMP.DBF в грешном нашем DBGrid"е

Все эти чудеса можно сделать и без TEMP.DBF


 
Игорь Шевченко ©   (2007-10-18 11:56) [34]

"Когда в товарищах согласья нет, на лад их дело не пойдет"
(с) Иван Андреевич Крылов


 
Правильный_Вася   (2007-10-18 12:01) [35]

это точно
когда не ясна цель, все равно куда идти


 
исследователь   (2007-10-18 12:12) [36]

Хорошо.


with ADOTable do
 begin
   Close;
   TableName := a[i];
   //showmessage(adotable.connectionstring);
   Open;
   First;
   while not Eof do
   begin
     CutTime := Int(FieldByName("DATE").AsDateTime) +
       Frac(DBStrToTime(FieldByName("TIME").Value));
                  //showmessage(datetimetostr(cuttime));
     if (CutTime >= StartTime) and (CutTime <= EndTime) then
     begin
       tbTemp.Append;
       for j := 0 to tbTemp.Fields.Count -1 do
         tbTemp.Fields[j].Value := Fields[j].Value;
       tbTemp.Post;
     end;
     if Length(a)>1 then
      pb.Position := (i * 100) div (length(a)-1)
     else
      pb.Position:=100;
     lblPercent.Caption := IntToStr(pb.Position)+"%";
     Next;
     Application.ProcessMessages;
   end;
 end;


где a - массив с найденными по запросу пользователя файлами.

что вызвало ошибку? Те же строчки, только TIME взято в кавычки.

Как показать? Как показать в DBGrid то, что я хочу, забив на реальное содержимое поля?


 
Правильный_Вася   (2007-10-18 12:32) [37]

обработать Field.OnGetText
или
сделать CalculatedField


 
исследователь   (2007-10-18 12:37) [38]

Приведи пример


 
Правильный_Вася   (2007-10-18 12:41) [39]

справку читай


 
исследователь   (2007-10-18 12:53) [40]

Я в BDS2007 удавлюсь в хелпе



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

Текущий архив: 2007.11.25;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.018 c
1-1189078540
den303_work
2007-09-06 15:35
2007.11.25
Создать контрол с заранее неизвестным классом


2-1193987162
Alex8
2007-11-02 10:06
2007.11.25
Набор полей в Query при 3-х таблицах


1-1188727240
Al500
2007-09-02 14:00
2007.11.25
TPanel - прорисовка


2-1194249160
ASDE
2007-11-05 10:52
2007.11.25
RegisterServiceCtrlHandlerEx


2-1193840686
Ламер
2007-10-31 17:24
2007.11.25
Команды посылаемые модемом серверу