Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.042 c
2-1193818997
bioSerg
2007-10-31 11:23
2007.11.25
Invalid Floating Point Operation и NAN


15-1192885708
к2в2
2007-10-20 17:08
2007.11.25
илюстратор + delphi


15-1193284803
vajo
2007-10-25 08:00
2007.11.25
Не срабатывает PHP скрипт


6-1174982246
skye
2007-03-27 11:57
2007.11.25
Game Monitor


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский