Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Не добавляются записи в НД (http://forum.oszone.net/showthread.php?t=29574)

Kuzya_jr 13-07-2004 04:54 204657

Тут такая проблемка.
вот этот код:
Код:


procedure Tstart_frm.Button1Click(Sender: TObject);
var
 * *Values:OLEVariant;
 * *excel,workbook,sheet:variant;
 * *iRow,q:integer;
begin
 excel:=CreateOleObject('Excel.Application');
 workbook:=excel.Workbooks.Open(OpenDialog1.FileName);
 sheet:=workbook.worksheets.item[1];
 Values:=sheet.UsedRange.Value;
 maxCol:=sheet.UsedRange.Columns.Count; * * * * *// ñòîëáöû.
 maxRow:=sheet.UsedRange.Rows.Count; * * * * * * * // ñòðîêè.
 
 for iRow:=strtoint(MaskEdit1.text) *to maxRow-strtoint(MaskEdit1.text) *do
 * *DM.New.AppendRecord([Values[iRow,1], Values[iRow,2],Values[iRow,3],Values[iRow,4],Values[iRow,5] Values[iRow,6]]);
 
 excel.quit;
end;

Не хочет добавлять записи в мою таблицу :(.
Таблицу создавал в DatabaseDesktop'е. Таблица Paradox7.
По идее, при нажатии этой кнопки, в неё должны занаситься данные из екселевского прайса (5000 пунктов). В DBGrid1 всё нормально отображается, типа вроде добавилось, но файл new.db как занимал 2кб, так и продолжает занимать :(. При повторном запуске проекта - нет ни одной записи :(. Я пробовал и InsertRecord, и по частям:
DM.New.insert;
DM.New['art']:=Values[iRow,1];
...
DM.New.Post;

Ничего не работает :(. Подскажите где ошибка?

P.s.: Delphi 6.0

[s]Исправлено: m007kuzya, 4:55 13-07-2004[/s]

hasherfrog 13-07-2004 10:59 204658

Цитата:

В DBGrid1 всё нормально отображается, типа вроде добавилось
Может, ему Save какой-гибудь сказать?

Kuzya_jr 13-07-2004 17:05 204659

Ну ды команда DM.New.Post и есть фиксация сделанных изменений. А команда DM.New.AppendRecord автоматически фиксирует изменения. Так в книжке и хелпе написано. Или есть какие-то другие способы save ?

hasherfrog 14-07-2004 09:42 204660

Нда-с, давненько не брал я в руки шашек :)
1. Попробуйте создать не Paradox, а какой-нибудь dBase. На парадокс много жалоб (вроде как).
2. При закрытии формы проделайте что-то вроде
Код:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var Loop: Integer;
begin
  {Generic way of ensuring all table changes are saved when form is closed}
  for Loop := 0 to ComponentCount - 1 do
   if Components[Loop] is TDataSet then
     with TDataSet(Components[Loop]) do
       if State in dsEditModes then
         Post;
end;

3. Я не вижу, в каком месте Вы открываете базу. Может, Вы пишите не в new.db, а в какой-нибудь new1.db :) ?

Kuzya_jr 23-07-2004 16:31 204661

Цитата:

3. Я не вижу, в каком месте Вы открываете базу. Может, Вы пишите не в new.db, а в какой-нибудь new1.db  ?
Я базу открывал в дельфе, поместив в свойство Active таблицы new (TTable) значение True.

Короче проблема решилась довольно просто. В этом-то и была загвоздка. Я проэкт запускал только из дельфи, по F9. А когда я запустил екзешник - всё нормально работает (только при закрытой дельфе). Когда я закрыл базы, и стал открывать их на onActivate формы - всё заработало как надо. Я так понял грабли тут из-за совместного (многопользовательского?) доступа к таблице т.к. сама дельфи, тоже считается клиентом и это порождает всякие глюки... Но я не уверен.


Время: 19:25.

Время: 19:25.
© OSzone.net 2001-