Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2013, 10:51   #1
Nikai
 
Регистрация: 10.01.2013
Сообщений: 6
По умолчанию изменение визуального имени столбца в таблице бд

Доброго времени суток,форумчане!!
у меня вот такая проблема сегодня:
создал datamodule,на него закинул adoconnection,adotable и datasource,на форме разместил dbgrid.
программным путём у меня выбирает,какую базу будет загружать,по-этому список столбцов пуст в adotable и изменить визуальное имя столбца не могу через property,а только программно.вот,собственно код:


Код:
datamodule3.DataConnection1.Connected:=false;
datamodule3.DataConnection1.ConnectionString:='Provider=Microsoft.ACE.OLEDB.12.0;Data Source='+ptb+';Persist Security Info=False;';
datamodule3.DataConnection1.Connected:=true;
datamodule3.AVOTable1.TableName:='AVO';
datamodule3.AVOTable1.Active:=true;
datamodule3.AVOTable1.Fields.FieldByName('date').DisplayName:='Дата';

выдаёт ошибку "cannot assign to a read-only property".кто знает,к каким свойствам и где надо изменить только чтение на read-write,или кто знает другое решение проблемы,подскажите плз..



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 11.01.2013 в 11:17.
Nikai вне форума Ответить с цитированием
Старый 11.01.2013, 10:58   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

На компоненте DBGrid щелкнуть два раза (или в Object Inspector в свойстве Columns нажать кнопку с тремя точками). В появившемся списке (пустом) добавить столько колонок, сколько должно отображаться в гриде. В свойствах каждой добавленной колонки указать FieldName, а в свойстве Title, подсвойстве Caption, ввести "визуальное имя" столбца. Там же, если требуется, указать ширину столбца (подсвойство Width).
Прик вне форума Ответить с цитированием
Старый 11.01.2013, 11:03   #3
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

так в dbgride столбцы переименуй...
примерно так:
Код:
DBGrid1.Columns[0].Title.Caption := 'Your_Name';
p.s. Оформляй код тегами, знак решетки #... а то получишь штраф...
maLoy*508 вне форума Ответить с цитированием
Старый 11.01.2013, 11:10   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

я когда то делал через схему но нужно заполнять в таблицах Примечание/Описание
Код:
procedure TDM.ShowDict(const TableName, Caption: string);
var
  Table:TADOTable;
  DS:TADODataSet;
  i:integer;
  GridEdit:TGridEdit;
begin
  Table:=TADOTable.Create(nil);
  try
    Table.Connection:=Conn;
    Table.TableName:=TableName;
    Table.ReadOnly:=not DM.adm;
    Table.Open;
    DS:=TADODataSet.Create(nil);
    try
      Conn.OpenSchema(siColumns,EmptyParam,EmptyParam,DS);
      with DS.FindField('DESCRIPTION') do
        for i:=0 to Table.FieldCount-1 do
          if DS.Locate('TABLE_NAME;COLUMN_NAME',VarArrayOf([TableName,Table.Fields[i].FieldName]),[]) then
            Table.Fields[i].DisplayLabel:=AsString;
    finally
      DS.Free;
    end;
    GridEdit:=TGridEdit.Create(self);
    try
      GridEdit.Caption:=Caption;
      GridEdit.DataSource.Dataset:=Table;
      GridEdit.ShowModal;
    finally
      GridEdit.Free;
    end;
  finally
    Table.Free;
  end;
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 11.01.2013, 11:13   #5
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Вот еще от туда полезный блок

Код:
procedure TDM.ValidateTable(DataSet: TDataSet;const ATableName:string='');
var
  TableName:string;
  Strings:TStringList;
  DS:TADODataSet;
  IsNullable,Description:TField;
  i:integer;
begin
  if ATableName<>'' then TableName:=ATableName else TableName:=DataSet.Name;
  Strings:=TStringList.Create;
  try
    DS:=TADODataSet.Create(nil);
    try
      Conn.OpenSchema(siColumns,EmptyParam,EmptyParam,DS);
      IsNullable:=DS.FieldByName('IS_NULLABLE');
      Description:=DS.FieldByName('DESCRIPTION');
      for i:=0 to DataSet.FieldCount-1 do
      with DataSet.Fields[i] do
      begin
        if IsNull and not ReadOnly then
        begin
          if not DS.Locate('TABLE_NAME;COLUMN_NAME',VarArrayOf([TableName,FieldName]),[]) then
            Continue;
          if IsNullable.AsBoolean then Continue;
          if not Description.IsNull then
            Strings.Add('"'+Description.AsString+'"')
          else
            Strings.Add('"'+FieldName+'"');
        end;
      end;
    finally
      DS.Free;
    end;
    if Strings.Count>0 then
    begin
      Strings.Insert(0,'Не заполнены обязательные поля:');
      Application.MessageBox(Strings.GetText,'Ошибка!',MB_ICONERROR);
      Abort;
    end;
  finally
    Strings.Free;
  end;
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 20.05.2013, 22:43   #6
ТипичныйСтудент
Форумчанин
 
Аватар для ТипичныйСтудент
 
Регистрация: 09.04.2013
Сообщений: 110
По умолчанию

ОГРОМНОЕ СПАСИБО!
Есть задача - реши ее!
ТипичныйСтудент вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание столбца в таблице динамически HelpMePlease! Общие вопросы C/C++ 11 01.06.2012 17:07
Изменение имени dll adspro Общие вопросы C/C++ 0 03.03.2012 14:54
Замена в имени столбца буквы на цифру Sergey112233 Microsoft Office Excel 3 19.10.2011 10:02
Выделение последнего столбца в таблице Busine2009 Microsoft Office Word 2 26.05.2009 07:20
Поиск по имени столбца и сложение строки по найденным столбцам mihakr Microsoft Office Excel 2 12.03.2009 13:35