crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Помогите разобраться с базами данных в QT
gogi
  опции профиля:
сообщение 14.7.2008, 9:10
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 19.6.2008
Пользователь №: 207

Спасибо сказали: 0 раз(а)




Репутация:   0  


У меня возникают сложности с добавлением/удалением записей в базу данных.
Вот написал тестовый проект, в котором просматривается проблема с добавлением (приаттачен).
Суть проблемы - после запуска в таблице одна строка. Жму Add. Появляется строка 2. В ней написано "www". Меняю на "222". Жму ещё раз Add. Появляется третья строка (с "www") и во второй строке какого-то хрена надпись становится также "www".

Проверял под: Debian GNU/Linux 4.0 (testing), g++ - 4.3.1-2, Qt - 4.4.0-3; Windows XP SP2 - MinGW-3.4.2, qt-win-opensource-4.4.0-mingw.
Прикрепленный файл  test_qt.zip ( 2,67 килобайт ) Кол-во скачиваний: 187
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 14.7.2008, 9:39
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(gogi @ 14.7.2008, 10:10) *
У меня возникают сложности с добавлением/удалением записей в базу данных.
Вот написал тестовый проект, в котором просматривается проблема с добавлением (приаттачен).
Суть проблемы - после запуска в таблице одна строка. Жму Add. Появляется строка 2. В ней написано "www". Меняю на "222". Жму ещё раз Add. Появляется третья строка (с "www") и во второй строке какого-то хрена надпись становится также "www".

У меня такое чувство, что ошибка вот в этой строчке:
model->setData(model->index(row, 1), "www");

Передавай введенное значение, а не "www"!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
gogi
  опции профиля:
сообщение 14.7.2008, 10:46
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 19.6.2008
Пользователь №: 207

Спасибо сказали: 0 раз(а)




Репутация:   0  


А откуда я его возьму? Это значение пользователь должен вводить. А здесь я просто добавляю строку. Если я напишу вот так:

model->setData(model->index(row, 1), "");


То ситуация повторяется, с той лишь разницей, что теперь в вместо "www" в строки заносится "".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 14.7.2008, 10:52
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(gogi @ 14.7.2008, 11:46) *
А откуда я его возьму? Это значение пользователь должен вводить. А здесь я просто добавляю строку. Если я напишу вот так:

model->setData(model->index(row, 1), "");


То ситуация повторяется, с той лишь разницей, что теперь в вместо "www" в строки заносится "".

Ну правильно: значит, ошибка именно в этом!!! :) Ты должен это делать, после того, как пользователь отредактировал поле ввода! ;)

Если я ничего не перепутал, то это можно сделать вроде бы так:
QSqlRecord record = model -> record(tableView -> currentIndex().row());
// далее твои действия с этой строкой!


Сообщение отредактировал AD - 14.7.2008, 12:10
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
gogi
  опции профиля:
сообщение 14.7.2008, 16:51
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 19.6.2008
Пользователь №: 207

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всё равно не понятно. :o

QSqlRecord record = model -> record(tableView -> currentIndex().row());
// далее твои действия с этой строкой!


Я с ней делать ничего не хочу. Хочу просто добавить строку, чтобы пользователь дальше мог редактировать.

Пробовал и комментировать строки с model->setData, и через QSqlQuery (есть в коде комментарий) - всё как-то криво работает.

PS Вроде делаю всё как в примерах указано, ан не работает!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 14.7.2008, 16:59
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(gogi @ 14.7.2008, 17:51) *
Всё равно не понятно. :o

QSqlRecord record = model -> record(tableView -> currentIndex().row());
// далее твои действия с этой строкой!


Я с ней делать ничего не хочу. Хочу просто добавить строку, чтобы пользователь дальше мог редактировать.

Пробовал и комментировать строки с model->setData, и через QSqlQuery (есть в коде комментарий) - всё как-то криво работает.

PS Вроде делаю всё как в примерах указано, ан не работает!

Я этим еще подробно не занимался, но ты из QSqlRecord можешь ведь получить QString-значение строки? Вот ее и вставляй в функцию setData!
Именно это и подразумевалось в комментарии // далее твои действия с этой строкой!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 21:51