Форум: "Прочее";
Текущий архив: 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.043 c