Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 20.02.2015
Сообщений: 38

Как обновлять только что вставленные записи

28.03.2015, 11:18. Показов 1183. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FormirovkaQuery.SQL.clear;
  FormirovkaQuery.SQL.Text:='INSERT INTO OTCHETS(ID_FKKO,ID_CLASS,NAME,SOSTAV,Wi,Ci,Ki,ID_NAME_OTCHET) VALUES(:B,:C,:D,:E,:F,:G,:H,:I)';
  FormirovkaQuery.ParamByName('B').Value:=DBGridEh1.DataSource.DataSet.Fields.Fields[1].Value;
  FormirovkaQuery.ParamByName('C').Value:=DBGridEh1.DataSource.DataSet.Fields.Fields[2].Value;
  FormirovkaQuery.ParamByName('D').Value:=DBGridEh1.DataSource.DataSet.Fields.Fields[3].Value;
  FormirovkaQuery.ParamByName('E').Value:=sostav;
  FormirovkaQuery.ParamByName('F').Value:=DBGridEh1.DataSource.DataSet.Fields.Fields[6].Value;
  FormirovkaQuery.ParamByName('G').Value:=Ci;
  FormirovkaQuery.ParamByName('H').Value:=(Ci / DBGridEh1.DataSource.DataSet.Fields.Fields[6].Value);
  FormirovkaQuery.ParamByName('I').Value:=ID;
  FormirovkaQuery.ExecSQL;
  FormirovkaQuery.SQL.clear;
  FormirovkaQuery.SQL.Text:='select NAME,SOSTAV,Wi,Ci,Ki from OTCHETS where id_fkko=:Sho';
  FormirovkaQuery.ParamByName('Sho').Value:=form4.pick2;
  FormirovkaQuery.Open;
Код срабатывает на дабл клик по первому гриду, эта строчка заносится в таблицу, и сразу выводится во втором гриде.
Добавляет то он хорошо, все вычисляет, но он не показывает записи, при нажатии на дабл клик, масимум если только старые, pick2=значению выбранному до этого в предыдущей форме id.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2015, 11:18
Ответы с готовыми решениями:

Как вывести ID только что добавленной записи?
Всем привет! В программе есть 2 TextBox. В первый вводиться ФИО Во второй номер телефона private void button1_Click(object...

Как узнать ID только что добавленной записи в БД
Здравствуйте! добавляю новую запись в таблицу и мне надо узнать ее id/ strSQL = "insert into сведения_больного (Дата_регистр, Фамилия)...

Как узнать id только что добавленной записи mysqli?
Всем привет! Записываю данные в БД. Надо узнать id этой записи, т.е. id только что вставленной записи. В БД у id стоит auto_increment. ...

2
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
28.03.2015, 12:48
СУБД то какая?
Если та же FB (IB), то без старта и завершение транзакции получим похожий эффект?
0
0 / 0 / 1
Регистрация: 20.02.2015
Сообщений: 38
28.03.2015, 16:19  [ТС]
Да FB c этими транзакциями я вообще не понимаю, я вставляю коммитретайн, а если вставляю
Delphi
1
2
3
QueryDel.Transaction.StartTransaction;
QueryDel.ExecSQL;
QueryDel.Transaction.CommitRetaining;
как то так, то он жалуется на ексекте, что открыта транзакция transaction is active. Это всегда происходит. А QueryDel.Transaction.CommitRetaining; оставляю без старта, все проходит без запинок. Но вот код, что я прислал, там это не работает.

Добавлено через 21 минуту
Помогите разобраться с транзакциями, пишу если так QueryDel.Transaction.Commit; то получается мне нужно все запросы открывать заного после каждого коммита, поискал как это обойти нашел ретайнинг, но увидел что так типа нельзя и будут ошибки, с проблемой разобрался, теперь пытаюсь разобраться в отчете, нашел у вас на форуме:


Delphi
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
procedure TForm5.Button2Click(Sender: TObject);
  const
  wdAlignParagraphCenter = 1;
  wdAlignParagraphLeft = 0;
  wdAlignParagraphRight = 2;
  wdLineStyleSingle = 1;
var
  wdApp, wdDoc, wdRng, wdTable : Variant;
  i, j, Res : Integer;
  D : TDateTime;
  Bm : TBookMark;
  Sd : TSaveDialog;
begin
 
  Sd := SaveDialog1; //SaveDialog1 уже должен быть на форме.
  //Если начальная папка диалога не задана, то в качестве начальной берём ту папку,
  //в которой расположен исполняемый файл нашей программы.
  if Sd.InitialDir = '' then Sd.InitialDir := ExtractFilePath( ParamStr(0) );
  //Запуск диалога сохранения файла.
  if not Sd.Execute then Exit;
  //Если файл с заданным именем существует, то запускаем диалог с пользователем.
  if FileExists(Sd.FileName) then begin
    Res := MessageBox(0, 'Файл с заданным именем уже существует. Перезаписать?'
      ,'Внимание!', MB_YESNO + MB_ICONQUESTION + MB_APPLMODAL);
    if Res <> IDYES then Exit;
  end;
 
  //Попытка запустить MS Word.
  try
    wdApp := CreateOleObject('Word.Application');
  except
    MessageBox(0, 'Не удалось запустить MS Word. Действие отменено.'
      ,'Внимание!', MB_OK + MB_ICONERROR + MB_APPLMODAL);
    Exit;
  end; 
 
  //Делаем видимым окно MS Word. На постоянной основе или на время отладки.
  wdApp.Visible := True;
  //Создаём новый документ.
  wdDoc := wdApp.Documents.Add;
  //На случай, если очень много данных и wdApp.Visible := True - тогда
  //для ускорения работы отключаем перерисовку окна MS Word.
  wdApp.ScreenUpdating := False;
  try
    wdRng := wdDoc.Content; //Диапазон, охватывающий всё содержимое документа.
 
    //Параграф 1. Заголовок отчёта.
 
    //Заголовок отчёта и перевод строки.
    wdRng.InsertAfter('Отчёт'#13#10);
    //Выравнивание по центру.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
    //Параметры шрифта.
    wdRng.Font.Name := 'Times New Roman';
    wdRng.Font.Bold := True;
    wdRng.Font.Size := 14;
 
    //Параграф 2. Общие сведения.
 
    //Формируем диапазон нового параграфа непосредственно за текущим диапазоном.
    wdRng.Start := wdRng.End;
    wdRng.InsertAfter(#13#10);
    D := Now;
    wdRng.InsertAfter('Дата: ' + FormatDateTime('dd.mm.yyyy', D) + #13#10);
    wdRng.InsertAfter('Время: ' + FormatDateTime('hh:nn:ss:zzz', D) + #13#10);
    //Сброс параметров параграфа.
    wdRng.ParagraphFormat.Reset;
    //Выравнивание по левому краю.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
    //Отступ слева на 2 сантиметра. Размер отступа задаётся в типографских
    //единицах - в пунктах. 1 пункт = 0.035 сантиметра.
    //При записи в поле LeftIndent, отступ отсчитывается от левого поля на странице.
    //wdRng.ParagraphFormat.LeftIndent := 2 / 0.035;
    //Параметры шрифта.
    wdRng.Font.Reset; //Сброс параметров шрифта.
    wdRng.Font.Size := 12;
    wdRng.Font.Bold := True;
 
    //Параграф 3. Заголовок таблицы.
 
    wdRng.Start := wdRng.End;
    wdRng.InsertAfter(#13#10);
    wdRng.InsertAfter('Таблица 1. Название отчета.'#13#10);
    wdRng.ParagraphFormat.Reset;
    wdRng.Font.Reset;
    wdRng.Font.Size := 12;
    wdRng.Font.Bold := False;
 
    //Параграф 4. Таблица.
 
    if not IBQuery2.Active then IBQuery2.Open;
 
    wdRng.Start := wdRng.End;
    //Добавляем таблицу MS Word. Пока создаём таблицу с двумя строками.
    wdTable := wdDoc.Tables.Add(wdRng.Characters.Last, 2, IBQuery2.Fields.Count);
    //Параметры линий таблицы.
    wdTable.Borders.InsideLineStyle := wdLineStyleSingle;
    wdTable.Borders.OutsideLineStyle := wdLineStyleSingle;
    //Сброс параметров параграфа.
    wdRng.ParagraphFormat.Reset;
    //Выравнивание всей таблицы - по левому краю.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
    //Оформление шапки.
    wdRng := wdTable.Rows.Item(1).Range; //Диапазон первой строки.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
    wdRng.Font.Size := 10;
    wdRng.Font.Bold := True;
    //Оформление первой строки данных - это вторая строка в таблице.
    //При добавлении следующих строк, их оформление будет копироваться с этой строки.
    wdRng := wdTable.Rows.Item(2).Range; //Диапазон второй строки.
    wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
    wdRng.Font.Size := 10;
    wdRng.Font.Bold := False;
 
    //Записываем шапку таблицы.
    for i := 0 to IBQuery2.Fields.Count - 1 do
      wdTable.Cell(1, i + 1).Range.Text := IBQuery2.Fields[i].DisplayName;
    //Записываем данные таблицы.
    IBQuery2.DisableControls;
    Bm := IBQuery2.GetBookMark;
    IBQuery2.First;
    i := 1; //Текущая строка в таблице MS Word.
    while not IBQuery2.Eof do begin
      Inc(i);
      //Если требуется, добавляем новую строку в конец таблицы.
      if i > 2 then wdTable.Rows.Add;
      //Записываем данные в строку таблицы MS Word.
      for j := 0 to IBQuery2.Fields.Count - 1 do
        wdTable.Cell(i, j + 1).Range.Text := IBQuery2.Fields[j].AsString;
      IBQuery2.Next;
    end;
    IBQuery2.GotoBookMark(Bm);
    IBQuery2.EnableControls;
 
  finally
    //Включение перерисовки окна MS Word. В случае, если wdApp.Visible := True.
    wdApp.ScreenUpdating := True;
  end;
 
  wdApp.DisplayAlerts := False; //Отключаем режим показа предупреждений.
  try
    wdDoc.SaveAs(FileName:=Sd.FileName); //Запись документа в файл.
  finally
    wdApp.DisplayAlerts := True; //Включаем режим показа предупреждений.
  end;
  //Закрываем документ.
  //wdDoc.Close;
  //Закрываем MS Word.
  //wdApp.Quit;
 end;
Вот только проблема 1, выдает ошибки если нет установленного ворда, так как он запускается, и сразу показывает отчет, может есть что то в оффлайн режиме, или что то немного проще?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2015, 16:19
Помогаю со студенческими работами здесь

Как вернуть ID только что добавленной записи в API?
У меня есть такой метод в контроллере: public ActionResult&lt;Lessons&gt; AddLessons( Lessons lessons) { ...

Как получить ID только что вставленной записи в MySQL ?
Пробовал: mysql_insert_id(); но она возвращает только 0. Вот моя функция: function addNewWorker($name, $email, $select, $radio){ ...

Как узнать ID только что сделанной записи в MYSQL?
У меня есть MYSQL процедура где я вставляю запись в таблицу и потом возвращаю его id, это я делаю или с SELECT LAST_INSERT_ID() или SELECT...

Как получить значение поля записи, только что внесенной в БД?
Я понимаю, что это уже где-то тут спрашивали, но я не нашел... Такая беда. Записываю в одну таблицу запись... Ей автоматом...

В только что созданной учетной записи пользователя не доступна Панель управления и не только
Windows 7 Home Basic x64 лицензия Подскажите, пожалуйста, как исправить проблемку, товарищи :cry: новая учетная запись...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru