Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 2
Регистрация: 13.06.2014
Сообщений: 80
MS SQL

Не отображаются данные в DBGrid'e, в таблицу заносятся

20.06.2014, 00:46. Показов 3648. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста. Проблема вот в чем, имеется клиентское приложение для работы с базой данных, заносятся данные о студенте в поля Edit, но при добавлении не отображаются в DBGrid'е хотя в таблицу заносятся. Две таблицы соеденены между собой с связью 1:1, необходимо реализовать добавление инфы о студенте и прикрепить к нему doc файл. По отдельности все работает. В ADODataSet прописан запрос для отображения данных в DBGrid'e :
SQL
1
2
3
4
SELECT *
    FROM info_about_students
        JOIN files
            ON files.id_student = info_about_students.id_student
Сейчас файл загружается к уже созданному студенту, но необходимо,чтобы работало по инному-заполнить поля, загрузить файл и при нажати одной кнопки добавить запись в таблицу. Сейчас данные о студенте добавляются в таблицу, но не отображаются DBGride.
Код кнопок выбора и загрузки документа:
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
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
     begin
       if not FileExists(OpenDialog1.FileName) then
        begin
        ShowMessage('Файл не найден.');
       Exit;
      end
      else
      DataModule2.ADODataSet1.Edit;
       TBlobfield(DataModule2.ADODataSet1.FieldByName('file_vkr')).LoadFromFile(OpenDialog1.FileName);
     end;
end;
 
 
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
 
  DataModule2.ADODataSet1.Post;
  DataModule2.ADODataSet1.Requery;
  DataModule2.ADODataSet1.Refresh;
  StatusBar1.Panels.Add();
  Statusbar1.Panels[0].Text:='Документ загружен';
 end;
Код добавления данных о студенте:
Delphi
1
2
3
4
5
6
procedure TForm1.Button1Click(Sender: TObject);
begin
DataModule2.sp_insert_student(edit1.Text, edit2.Text, edit3.Text, strtoint(edit4.text),edit5.Text,edit6.Text,strtoint(edit7.text));
DataModule2.ADODataSet1.Close;
DataModule2.ADODataSet1.Open;
end;
Я так понял причина, в неодновременной загрузке инфы и документа, поэтому не отображается запись, хотя не уверен, помогите решить эту проблему!
Необходимо либо все данные сразу добавить в таблицу, либо добавить сначала данные о студнте, чтобы они отображались, поле Blob может быть пустым, потом уже файл загрузить.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.06.2014, 00:46
Ответы с готовыми решениями:

Данные не заносятся в таблицу
Данные не заносятся в таблицу, без ошибок, просто строчек в таблице не увеличивается. По плану, по нажатию кнопки данные из формы должны...

Данные не заносятся в таблицу
Данные не заносятся в таблицу, без ошибок, просто строчек в таблице не увеличивается. По плану, по нажатию кнопки данные из формы должны...

Данные не заносятся в таблицу
Подскажите пожалуйста почему данные не заносятся в таблицу ? Пробовал по разному например $query = mysql_query("INSERT INTO...

12
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
20.06.2014, 02:08
Цитата Сообщение от keen_qd Посмотреть сообщение
но при добавлении не отображаются в DBGrid'е хотя в таблицу заносятся
Правильно. Они же в таблицу заносятся, а не в DBGrid. Представь себе что DBGrid показывает фотку набора данных сделанную в момент его открытия. После этого таблицу изменили. Изменится ли от этого та самая фотка?
0
0 / 0 / 2
Регистрация: 13.06.2014
Сообщений: 80
20.06.2014, 10:10  [ТС]
Всмысле правильно? До того как соединил две таблицы таким образом, все работало, ввожу данные,заносятся в базу отображается на компоненте,все прекрасно
SQL
1
2
3
4
    SELECT *
    FROM info_about_students
        JOIN files
            ON files.id_student = info_about_students.id_student
После, изменения DBGrid'e не отображаются, в базу заносятся
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
20.06.2014, 10:42
Цитата Сообщение от keen_qd Посмотреть сообщение
До того как соединил две таблицы таким образом, все работало
То была работа с TTable наверняка. С TQuery все по другому. Занес данные - выполни запрос по новой.
0
0 / 0 / 2
Регистрация: 13.06.2014
Сообщений: 80
20.06.2014, 10:52  [ТС]
Работал с компонентами ADODataSet, DataSource, ADOStoredProc, TQuery не использовал
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
20.06.2014, 11:04
Цитата Сообщение от keen_qd Посмотреть сообщение
Работал с компонентами ADODataSet, DataSource, ADOStoredProc
Ну это не суть важно. Привыкай к нормальной работе с БД. Автоматом отображение измененных данных не получишь.
0
0 / 0 / 2
Регистрация: 13.06.2014
Сообщений: 80
20.06.2014, 17:44  [ТС]
Дак что не так ? Как организовать повторный запрос?

Добавлено через 6 часов 16 минут
Мне необходимо, сначала ввести данные о студенте, потом добавить файл потом отобразится таблица в которой инфа о студенте и файл, а сейчас получается что только готовому студенту могу загрузить файл. А как последовательно слать не допираю. После чего именно выполнить запрос? я так понимаю после
p
Delphi
1
2
3
4
5
6
procedure TForm7.Button1Click(Sender: TObject);
begin
 
DataModule2.sp_insert_student(edit1.Text, edit2.Text, edit3.Text, strtoint(edit4.text),edit5.Text,edit6.Text,strtoint(edit7.text));
DataModule2.ADODataSet1.Close;
DataModule2.ADODataSet1.Open;
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
21.06.2014, 01:45
Цитата Сообщение от keen_qd Посмотреть сообщение
Мне необходимо, сначала ввести данные о студенте, потом добавить файл потом отобразится таблица в которой инфа о студенте и файл, а сейчас получается что только готовому студенту могу загрузить файл.
Теперь и я уже не понимаю что нужно и что не получается?
Поясни что имеется в виду под "Сейчас файл загружается к уже созданному студенту", а ещё точнее что такое "созданный студент" ("готовый студент")?
0
0 / 0 / 2
Регистрация: 13.06.2014
Сообщений: 80
21.06.2014, 02:20  [ТС]
Вообщем сейчас файл могу загрузить только к созданной строке студент и только если вручную пропишу id_student в таблицах - о студенте и files (те их вручную соеденю) . мне же нужно - добавляю студента, жму добавить(когда нажимаю добавить - заносится инфа о студенте в базу и создается пустая строка в таблице files) ,далее переходим в следующее окно (загрузка файла) - выбираю файл, загружаю в ячейку которую создал в предыдущем окне, жму опять далее переходим в главное меню там таблица, которая корректно отображает - имя фамилия курс и тд (поля таблицы о студентах) и поле файл вкр(из таблицы files). Для этого(создания пустой строки в таблице files) создал процедуру, но незнаю как записать правильно(где стрелка):
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
begin
DataModule2.AdoQuery1.close;
DataModule2.AdoQuery1.SQL.text:='INSERT INTO files(id_file_vkr, file_vkr, id_student) VALUES (:id_file_vkr, :file_vkr, :id_student)';
DataModule2.AdoQuery1.Parameters.Refresh;
DataModule2.AdoQuery1.Parameters[0].Value:=DataModule2.ADODataset1.FieldByName('id_file_vkr').AsInteger;
DataModule2.AdoQuery1.Parameters[1].Value:=DataModule2.ADODataset1.FieldByName('file_vkr').As;<-----
DataModule2.AdoQuery1.Parameters[2].Value:=DataModule2.ADODataset1.FieldByName('id_student').AsInteger;
DataModule2.AdoQuery1.ExecSQL;
end;
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
21.06.2014, 02:48
Цитата Сообщение от keen_qd Посмотреть сообщение
Вообщем сейчас файл могу загрузить только к созданной строке студент и только если вручную пропишу id_student в таблицах - о студенте и files (те их вручную соеденю) . мне же нужно - добавляю студента, жму добавить(когда нажимаю добавить - заносится инфа о студенте в базу и создается пустая строка в таблице files) ,далее переходим в следующее окно (загрузка файла) - выбираю файл, загружаю в ячейку которую создал в предыдущем окне,
Ну ты замудрил.
Т.е. ты ищешь способ с помощью INSERT INTO записать в таблицу BLOB?
0
0 / 0 / 2
Регистрация: 13.06.2014
Сообщений: 80
21.06.2014, 02:57  [ТС]
подсказали сделать так
Delphi
1
DataModule2.AdoQuery1.Parameters.ParamByName('file_vkr').LoadFromStream(ADODataSet1.CreateBlobStream(ADODataSet1.FieldByName('file_vkr'),bmRead));
но пишет [DCC Error] Unit1.pas(75): E2035 Not enough actual parameters
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
21.06.2014, 03:02
Цитата Сообщение от keen_qd Посмотреть сообщение
подсказали сделать так
Уже лучше.
Но бред.
Это значит что в двух таблицах одной и той же БД будут хранится две копии BLOB-поля.
0
0 / 0 / 2
Регистрация: 13.06.2014
Сообщений: 80
22.06.2014, 16:54  [ТС]
Существует способ создать через ADOQurey, новую строку с обычными полям и Blobe полем программно или нет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.06.2014, 16:54
Помогаю со студенческими работами здесь

В таблицу не заносятся данные(
Здравствуйте уважаемые форумчане, я вот пытаюсь в таблицу добавить данные, которые я заношу в web-интерфейсе, ниже представлен код....

Данные не заносятся в таблицу
&lt;?php mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;&quot;); mysql_select_db(&quot;test&quot;); if ( $_POST ) { $name = $_POST; $text =...

Не заносятся данные в таблицу
Доброго времени суток! Не могу понять в чем проблема. При занесении данных в таблицу вызываю такой метод: public bool...

Почему не заносятся данные в таблицу?
if ($o==&quot;ok&quot;){ $sql=&quot;INSERT INTO $bd (pol,nomer,name) values (m,4,Вася)&quot;; mysql_query($sql, $podkl); header('Location:...

Не заносятся данные в таблицу в базе данных
Добрый день я изучаю php недавно помогите понять в чем ошибка. Делаю регистрацию и возникла такая проблема в файле save_user все работает...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru