powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обновить содержание базы
22 сообщений из 22, страница 1 из 1
Обновить содержание базы
    #39464373
Den159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Не могу добиться того, чтобы база после добавления поля обновлялась.
авторIBQuery2.SQL.Text := 'insert into PRISPOSOBU (D_USE,T_USE) Values ('+QuotedStr(DateToStr(d_use))+','+QuotedStr(TimeToStr(t_use))+')';

IBQuery2.ExecSQL;
IBTransaction2.Commit;

Модератор: Тема перенесена из форума "Firebird, InterBase".
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464381
Фотография o_v_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что мы тут можем понять?
Работает ли запрос в рамках именно этой упомянутой транзакции?
Выполняется ли данный запрос без ошибок?
И вообще тема "добавления поля" не раскрыта.
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464399
Den159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, IniFiles, IBCustomDataSet, IBQuery, IBDatabase,
  Grids, DBGrids, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    IBTransaction1: TIBTransaction;
    IBDatabase1: TIBDatabase;
    IBQuery1: TIBQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    Edit1: TEdit;
    Button1: TButton;
    IBQuery2: TIBQuery;
    IBTransaction2: TIBTransaction;
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  d_use, t_use: TDateTime;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  FIniFile: TIniFile;
begin
  try
    FIniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) +
      'Config.ini');
    try
      IBDatabase1.DatabaseName := FIniFile.ReadString('Base', 'Path', '');
    finally
      FIniFile.Free;
    end;
    IBDatabase1.Connected := True;
    with IBQuery1 do
    begin
      SQL.Text := 'select * from PRISPOSOBU';
      Open;
    end;

  except
    on E: Exception do
    begin
      Application.MessageBox(PChar(e.Message), 'Ошибка!', MB_ICONERROR);
    end;
  end;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  IBQuery1.Close;
  IBDatabase1.Connected := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  d_use := Now;
  t_use := Now;

  if ibdatabase1.Connected = false then
    ibdatabase1.Connected := true;

  IBQuery2.SQL.Text := 'insert into PRISPOSOBU (PRISP_NAME,D_USE,T_USE) Values ('+QuotedStr(edit1.Text)+','+QuotedStr(DateToStr(d_use))+','+QuotedStr(TimeToStr(t_use))+')';

  ibquery2.ExecSQL;
    IBTransaction2.Commit;
    IBQuery1.SQL.Text:='select * from PRISPOSOBU';

    IBQuery1.Close;
    IBQuery1.Open;

end;
end.



У меня не получается обновить содержание базы после добавления поля...
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464460
Den159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
o_v_a,

Прикрепил исходный код.
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464473
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из твоего кода не совсем понятно, зачем там транзакция?

По-моему строчку "IBTransaction2.Commit;" надо закомментировать
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464481
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den159
Код: pascal
1.
IBQuery2.SQL.Text := 'insert into PRISPOSOBU (PRISP_NAME,D_USE,T_USE) Values ('+QuotedStr(edit1.Text)+','+QuotedStr(DateToStr(d_use))+','+QuotedStr(TimeToStr(t_use))+')';


Про параметры слыхал?

Den159
Код: pascal
1.
2.
ibquery2.ExecSQL;
    IBTransaction2.Commit;


Транзакция сама стартует?
Den159не получается обновить содержание базы после добавления поля..
там не поле добавляется, а запись

зы. про форматирование кода тоже не читал ?
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464496
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вот так написать
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
procedure TForm1.Button1Click(Sender: TObject);
begin
d_use := Now;
t_use := Now;

if not ibdatabase1.Connected then ibdatabase1.Connected := true;

IBQuery2.SQL.Text := 'insert into PRISPOSOBU (PRISP_NAME,D_USE,T_USE) Values (:prmName, :prmD, :prmT)';
IBQuery2.SQL.Prepare;
IBQuery2.ParamByName('prmName').Value:= edit1.Text;
IBQuery2.ParamByName('prmD').Value:= d_use;
IBQuery2.ParamByName('prmT').Value:= t_use;
  
  IBTransaction2.StartTransaction;
  try
  ibquery2.ExecSQL;
  IBTransaction2.Commit;
  except
  IBTransaction2.Rollback;
  end;

IBQuery1.SQL.Text:='select * from PRISPOSOBU';

IBQuery1.Close;
IBQuery1.Open;

end;


что получится?

зы. писал на коленке ...
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464503
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда меняешь текст запроса, query автоматом закрывается. :)
Док
Код: pascal
1.
2.
3.
IBQuery1.SQL.Text:='select * from PRISPOSOBU';

IBQuery1.Close;
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464509
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den159
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure TForm1.Button1Click(Sender: TObject);
begin
 
  //.... пропущено
    IBQuery2.IBTransaction:=IBTransaction2;    //<<<<  я давно на IBX не писал, могу ошибиться в именах методов/пропертей
    IBTransaction2.StartTransaction;                 //<<<< но смысл ясен надеюсь?

  ibquery2.ExecSQL;
    IBTransaction2.Commit;

end;




Ну как-то так...
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464630
Den159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Док,

получается то же что и у меня, значение заносится но сама таблица не обновляется...
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464634
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den159,

Транзакцию, к которой твоя читающая Query присоединена, передерни.
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464724
Den159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMasterDen159,

Транзакцию, к которой твоя читающая Query присоединена, передерни.

Я не понял вас...
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464734
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den159DarkMasterDen159,вопросы

Транзакцию, к которой твоя читающая Query присоединена, передерни.

Я не понял вас...
А что так? Ты "поля добавляешь", почему он не может тебе предложить "транзакцию передернуть"?
Тут на днях один товарищ исходники в виде картинки прикреплял и транслитом писать пытался.

Давайте дальше ахинею нести - это же весело.
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464745
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den159,

Сделай рестарт читающей транзакции и посмотри, что получилось.
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464765
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanКогда меняешь текст запроса, query автоматом закрывается. :)
"Береженого Бог бережет," - сказала монашка ...."

зы. код причесал только там, где увидел...

Den159получается то же что и у меня, значение заносится но сама таблица не обновляется...
а как ты понял, что значение добавлено?

У меня подозрение, чтоб у тебя параметры транзакции неправильные. Почитай здесь
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464767
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокПочитай здесь
можно даже сразу сюда
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464821
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den159
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
...
  TForm1 = class(TForm)
    IBTransaction1: TIBTransaction;
    IBDatabase1: TIBDatabase;
    IBQuery1: TIBQuery;
...
    IBQuery2: TIBQuery;
    IBTransaction2: TIBTransaction;
...
  IBQuery2.SQL.Text := 'insert into PRISPOSOBU (PRISP_NAME,D_USE,T_USE) Values ('+QuotedStr(edit1.Text)+','+QuotedStr(DateToStr(d_use))+','+QuotedStr(TimeToStr(t_use))+')';

  ibquery2.ExecSQL;
    IBTransaction2.Commit;
    IBQuery1.SQL.Text:='select * from PRISPOSOBU';

    IBQuery1.Close;
    IBQuery1.Open;
...


...
- данных мало. Неизвестно, в каких транзакциях живут IBQuery1 и IBQuery2.

Вполне возможно, что в разных. И мы не знаем, какие параметры у "читающей" (т.е. той, в которой живет IBQuery1) транзакции. Например, это снапшот, и обновленные данные не будут видны до перезапуска транзакции.

~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 Den159: создай крошечный проект, заархивируй вместе с базой и выложи здесь .
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464882
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den159,

да классика же. Читающий запрос в транзакции snapshot (компонент IBTransaction без параметров). Надо у него поменять параметры транзакции на read committed, и все.
Читаем
http://www.ibase.ru/ibx/
про TIBTransaction, и остальное.

ДокПочитай здесь
Док, у него IBX, а ты ему ФИБплюс суешь. Это мы понимаем, что оно похожее. Но у ФИБплюса и ИБХ умолчания разные, и т.д.
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39464906
Den159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvDen159,

да классика же. Читающий запрос в транзакции snapshot (компонент IBTransaction без параметров). Надо у него поменять параметры транзакции на read committed, и все.
Читаем
http://www.ibase.ru/ibx/
про TIBTransaction, и остальное.

ДокПочитай здесь
Док, у него IBX, а ты ему ФИБплюс суешь. Это мы понимаем, что оно похожее. Но у ФИБплюса и ИБХ умолчания разные, и т.д.

Все помогло, спасибо!!! Не знал о таком, теперь буду знать.
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39465044
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvНо у ФИБплюса и ИБХ умолчания разные, и т.д.
у фибов уж больно это хорошо описано
kdvЭто мы понимаем, что оно похожее
помнится, когда у нас, первокурсников, только началась анатомия, препод-декан рассказал нам секрет, что в человеческом организме имеется 400 костей, но изучать мы будем только 200. На вопрос почему, он просто ответил: потому что они - парные :)
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39465046
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доку фибов уж больно это хорошо описано
а у меня - плохо?
...
Рейтинг: 0 / 0
Обновить содержание базы
    #39465052
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvа у меня - плохо?
Что ты, у тебя тоже обстоятельно, не прими за лесть

Но мне фибовские запомнились, потому что я с них начал, а твою статью прочитал потом, много позже
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обновить содержание базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]