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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2015, 10:06   #1
pavel4966
 
Регистрация: 07.11.2015
Сообщений: 9
По умолчанию Работа с БД без BDE

Здравствуйте все! Подскажите, пожалуйста, каким образом сохранить в таблицу Paradox обновлённые значения из StringGrid. Установить офис и использовать работу с его компонентами нежелательно. Пользователи невысокой компьютерной грамотности, поэтому возможны и удаления базы и несанкционированные правки «от любознательности». Проблема в том, что каталог с таблицей создаётся, пара стандартных логин-пароль отображается, а дальше затык. Постоянная ошибка «База не в режиме редактирования или вставки». Вот текст программы:

Код:
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var datadir: string;
i, k: integer;
begin
i:=0;
k:=0;
if not (DirectoryExists(ExtractFilePath(Application.exename)+'data'))
 then createDir(ExtractFilePath(Application.exename)+'data');
 datadir:=ExtractFilePath(Application.exename)+'data';
//Если отсутствует папка data создать её

//Открытие\создание таблицы паролей 'Admin-Admin' '123-123'

  if not Table_user.Exists then
   with Table_user do begin
    Active := False;
    DatabaseName :=(datadir);
    TableName :='user';
    TableType := ttParadox;
     with FieldDefs do
       begin
        Clear;
         Add('User', ftstring,10, true);
         Add('Password', ftstring, 10, true);
         end;

  CreateTable;
 Table_user.Open;
 Table_user.EDIT;
 Table_user.fields[0].asstring := 'Admin' ;
 Table_user.fieldbyname('Password').asstring := 'Admin' ;
 Table_user.Insert;
 Table_user.fields[0].AsString := '123' ;
 Table_user.fields[1].AsString := '123' ;
 Table_user.Post;
end;

while not Table_user.Eof do
begin
  pole.Cells[0, i]:=Table_user.Fields[0].AsString;
  pole.Cells[1, i]:=Table_user.Fields[1].AsString;
  i:=k+1;
  k:=i;
  Table_user.Next;
  end;
Table_user.Close;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin

Table_user.Open;
Table_user.First;
Table_user.Edit;
with pole do
for i:=0 to RowCount do begin
  Table_user.Fields[0].Value:=pole.Cells[0, i];
  Table_user.Fields[1].Value:=pole.Cells[1, i];
  Table_user.Next;
  end;

  Table_user.post;
  Table_user.close;
end;
end.
Заранее благодарен за все советы и замечания.
P.S. использовать BDE не хочу, так при переносе с компа на комп начинаются проблемы с адресацией.

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 10.11.2015 в 10:13.
pavel4966 вне форума Ответить с цитированием
Старый 10.11.2015, 11:24   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Edit нужно вызывать как раз перед внесением данных:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin

Table_user.Open;
Table_user.First;

with pole do
for i:=0 to RowCount do begin
  Table_user.Edit;
   Table_user.Fields[0].Value:=pole.Cells[0, i];
   Table_user.Fields[1].Value:=pole.Cells[1, i];
  Table_user.Next;
end;

  Table_user.post;
  Table_user.close;
end;
А во-вторых... чет мне твой подход совсем не нра... Чет тут не так... Не по феншую чет тут...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2015, 11:38   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сомнительно, что без BDE. Если тип у Table_user TTable, а судя по именам свойств именно так, то без BDE слишком громко сказано. С BDE, еще как с BDE
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.11.2015, 09:02   #4
pavel4966
 
Регистрация: 07.11.2015
Сообщений: 9
Хорошо

Спасибо за советы. Объяснюсь. Конечно, всё это не от хорошей жизни. Занимаюсь автоматизацией и с Delphi работаю не так давно. Дело в том, что на установках управление реализовано с компа. SCADA системы заточены под конкретную начинку "железа", поэтому редко бывают универсальны. Но при этом устанавливать нормальный лицензионный пакет офиса никто не собирается, экономят, блин. Вот и изгаляюсь под стандартный набор windows. Если б было возможно через Excel и Application... не было б проблем. Но рабочим на местах обязательно надо залезть и чё-нить стереть или исправить. Поэтому пробую хранить настройки в БД. Paradox показалась самой простой. А при добавлении в каталог проекта ряда dll исчезает проблема с реализацией на любом компе, даже где никогда BDE и не пахло. Уф, кажется всё. Возможно, вы знаете более простой и надёжный способ, подскажите. Буду признателен. С уважением к великим...
pavel4966 вне форума Ответить с цитированием
Старый 11.11.2015, 09:30   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Уф, кажется всё.
Сумбур окончен )
Цитата:
устанавливать нормальный лицензионный пакет офиса никто не собирается, экономят, блин.
Открой для себя Libre Office из TDF.
Цитата:
Но рабочим на местах обязательно надо залезть и чё-нить стереть или исправить. Поэтому пробую хранить настройки в БД. Paradox показалась самой простой.
Ты хочешь защитить данные? Для этого подойдет и INI файл или XML (или даже DBF), в котором можно просто эти данные шифровать.

Если ты опишешь задачу подробнее, уверен решение окажется очень простым, и без всяких баз данных.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2015, 10:31   #6
pavel4966
 
Регистрация: 07.11.2015
Сообщений: 9
По умолчанию

Вставка Edit не решила всех проблем. Генерится сообщение ' Fields(User) must have a value'. Ему же присваивается значение поля из StringGrid, или что-то не так?

Задача достаточно проста: в ходе работы установки используются данные настройки работы: время работы цилиндров поршней, порядок группировки и т.д. Данные не ахти какие страшные - целые и строковые переменные. Но в процессе наладки возникает необходимость подстройки этих параметров. Кроме того, вход в систему должен быть защищён, это позволяет заносить в протокол (текстовый файл) все действия оператора для последующего контроля нестандартных ситуаций. Как эти данные и где хранить, чтобы оператор до них не добрался, я и ломаю себе голову. Спасибо за внимание.

Последний раз редактировалось Stilet; 11.11.2015 в 11:30.
pavel4966 вне форума Ответить с цитированием
Старый 11.11.2015, 11:34   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как эти данные и где хранить, чтобы оператор до них не добрался
В ИНИ файле шифрованием :
Код:
Var Ini:TIniFile;
...
ini:=TInifile.Create(ExtractFilePath(ParamStr(0))+'Настройки.ini');
...
ini.WriteInteger(Теперь читаем Хелп)
...
ini.free;
Или в реестре.
Тоже не сложно.
Почитать про класс TRegistry
Вот например обсуждение: http://www.programmersforum.ru/showt...ight=TRegistry
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2015, 11:59   #8
pavel4966
 
Регистрация: 07.11.2015
Сообщений: 9
По умолчанию

Но ведь ini файлы легко правятся в блокноте. Как ни кодируй содержимое. Если есть ссылка на help по работе с ini, буду признателен за помощь. Дальше сам как-нибудь. Спасибо.
pavel4966 вне форума Ответить с цитированием
Старый 11.11.2015, 12:03   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
легко правятся в блокноте
Не, шифрованные не правятся, а портятся и легко
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.11.2015, 12:14   #10
pavel4966
 
Регистрация: 07.11.2015
Сообщений: 9
По умолчанию

и как быть? Необходима защита от дурака, сотрёт, разобьёт, потеряет... Файл параметров "по умолчанию" можно восстановить, но это опять дополнительные настройки. Остаётся одно: разделяй и властвуй, - исполняемый модуль в доступном месте, всё остальное - в недоступном?

а почему связался с БД - в них проще организовать поиск, сортировку и т.д. Не текстовку же превращать в массивы и их перелопачивать по искомым признакам?

Последний раз редактировалось Stilet; 11.11.2015 в 13:01.
pavel4966 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi и *.db без BDE tarakan1983 БД в Delphi 3 12.01.2012 10:19
Регистрация базы без BDE Administrator Ronin333 БД в Delphi 1 25.05.2010 08:20
Как использовать прогу без BDE administrator Kuchiki Byakuya БД в Delphi 5 24.04.2010 22:18
BDE и DataBase Desktop - некорректная работа в Vista Dux БД в Delphi 9 03.04.2008 23:18
Работа с таблицей без БД Гр_ БД в Delphi 3 06.06.2007 16:31