Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить размер поля в Access, Изменить размер поля в Access  
V
    Опции темы
Perun
Дата 15.2.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.8.2007
Где: Краснодар

Репутация: нет
Всего: нет



Доброго времени суток всем.
Поделитесь опытом, задача несложная.
Имеется БД в Access, нужно увеличить размер текстового поля программно, подключившись к базе
Я пробовал через ADO, получаю доступ к базе, к полю, меняю размер с 50 до 200...
Если не заремить Open() и  Close(), то получается ошибка
Открываю БД в Access - размер поля остался прежним. Как сохранить результат? 

//ADOTable->Open();
if(SizeV->Text != "")
  {
   ADOTable->Fields->FieldByName("НаимОрг")->Size = SizeV->Text.ToInt();
   ADOTable->SetFields(V,200);
  }
else
  ShowMessage("Укажите новый размер поля!");
//ADOTable->Close();

SizeV - TEdit, из которого берётся размер поля(для примера)
PM MAIL ICQ   Вверх
volvo877
Дата 16.2.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 13
Всего: 116



SQL-запрос вида
Код
  ADOQuery1->SQL->Clear();
  ADOQuery1->SQL->Add("ALTER TABLE название_таблицы ALTER COLUMN название_поля TEXT("
    + SizeV->Text + ")");
  ADOQuery1->ExecSQL();
не проходит?
PM MAIL   Вверх
Perun
Дата 16.2.2008, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.8.2007
Где: Краснодар

Репутация: нет
Всего: нет



Спасибо, я тоже об этом подумал, сейчас поробуем!
О результате сообщу.
PM MAIL ICQ   Вверх
Perun
Дата 17.2.2008, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.8.2007
Где: Краснодар

Репутация: нет
Всего: нет



Всё работает - спасибо, а через ADOTable как вариант можно было сделать? 
PM MAIL ICQ   Вверх
Perun
Дата 17.2.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.8.2007
Где: Краснодар

Репутация: нет
Всего: нет



проблема в пробелах: если у объекта есть пробел говорит, что ошибка синтаксиса инструкции ALTER.
попробовал копию таблицы  без пробела(надо 2 поля увеличить) 1 проходит, 2:
ошибка синтаксиса инструкции ALTER?
void __fastcall TForm1::ChangeSizeClick(TObject *Sender)
{
ADOTable1->Open();
    ADOQuery2->SQL->Clear();
    AnsiString s = "ALTER TABLE tbl_Клиенты ALTER COLUMN НаимОрг TEXT(200)",
               fn = "tbl_База_заключений", ser = "Сертификат", Nexp = "Номер эспертизы",
               str = "ALTER TABLE " + fn +  " ALTER COLUMN " + ser + " TEXT(200)";
    ADOQuery2->SQL->Add(str);
    ADOQuery2->ExecSQL();
    str = "ALTER TABLE " + fn +  " ALTER COLUMN " + Nexp + " TEXT(200)";
    ADOQuery2->SQL->Clear();
    ADOQuery2->SQL->Add(str);
    ADOQuery2->ExecSQL();
ADOTable1->Close();
ADOConnection1->Connected = false;
} 


Этот код для оиргинальной таблицы с пробелами
              if(ADOTable->Active)
            ADOTable->Close();
         if(ADOConnection->Connected)
            ADOConnection->Connected = false;
                ADOConnection->Connected = true;
         ADOTable->Open();
         AnsiString fn = "База заключений", ser = "Сертификат",
                    str = "ALTER TABLE " + fn +  " ALTER COLUMN " + ser + " TEXT(200)";
         TableN->Text = str;
         ADOQuery1->SQL->Clear();
         ADOQuery1->SQL->Add(str);
         ADOQuery1->ExecSQL();
         ADOQuery1->SQL->Clear();
                 str = "ALTER TABLE База заключений ALTER COLUMN Номер экспертизы TEXT(200)";
         ADOQuery1->SQL->Add(str);
                 ADOQuery1->ExecSQL();
                 ADOTable->Close();
         ADOConnection->Connected = false;
PM MAIL ICQ   Вверх
volvo877
Дата 17.2.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 13
Всего: 116



Код

  Nexp = "[Номер эспертизы]"; // <--- Название содержит пробелы, пользуйся скобками

PM MAIL   Вверх
Perun
Дата 17.2.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 15.8.2007
Где: Краснодар

Репутация: нет
Всего: нет



Спасибо, вразумили.
Посоветуйте, что мне почитать про ADO и синтаксис SQL для Builder.
Про пробелы я знал, что в кавычки надо заключитm
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.