M
MadBear541Наурыз 21, 2017, 12:33 Т.Ж.
передать результат запроса sql в другую форму
Подскажите как передать переменную QString в которой хранится результат Sql запроса в другую форму. И как в QComboBox передавать значение из таблицы одной формы, в ней данные заполняются по QSqlQueryModel чтоб сохранялось выбранное значение, так же надо чтоб вообще можно было выбирать любые поля ( это я реализовал).
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
OI
- Ora Iro
- Жел. 24, 2024, 6:38 Т.Ж.
C++ - Тест 001. Первая программа и типы данных
- Нәтиже:40ұпай,
- Бағалау ұпайлары-8
AD
- Akiv Doros
- Қар. 11, 2024, 2:58 Т.Қ.
C++ - Тест 004. Указатели, Массивы и Циклы
- Нәтиже:50ұпай,
- Бағалау ұпайлары-4
m
- molni99
- Қаз. 26, 2024, 1:37 Т.Ж.
C++ - Тест 004. Указатели, Массивы и Циклы
- Нәтиже:80ұпай,
- Бағалау ұпайлары4
Соңғы пікірлер
ИМ
Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Енді форумда талқылаңыз
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
t
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
NSProjectМаусым 4, 2022, 3:49 Т.Ж.
IscanderCheҚаз. 31, 2024, 3:43 Т.Қ.
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
Если есть некая абстрактная переменная QString , допустим m_string . То для передачи в другую форму, допустим это будет поле QLineEdit, поскольку слишком абстрактно вы сформулировали это понятие. Нужно сделать так:
Ну а у QComboBox нужно использовать метод addItem()
А под сохранением выбранного значения, вообще не ясно, что вы подразумевали конкретно.
Слишком абстрактный вопрос, без конкретизации деталей ...
есть QString idrn - в не ложу стринговое значение результата sql запроса, то есть например idrn принимает значение Первомайский - имя района. мне теперь необходимо чтоб в другой форме по двойному клику в первой получал в QComboBox - который делает выборку из базы и предлагает имена районов. саму выборку я реализовал:
где rayn - имя QComboBox. Так же мне надо для формирования sql запроса в форме два использовать значение idrn и еще пару аналогичных. я пытался сделать с использованием сигнала, но не вышло. Сам я в программировании подобного уровня новичок, по сути вообще ноль.Если эта форма является таблицей, то бишь QTableView , то используйте сигнал doubleClicked , который вернёт QModelIndex, который будет указывать на текущую ячейку. А далее уже забираете данные из ячейки и кидаете их в QComboBox. Посмотрите статью по QDataWidgetMapper , там как раз используется сигнал doubleClicked .
Если же подразумевается поле ввода, наподобие QLineEdit, то нужно наследоваться от этого класса и переопределять метод mouseDoubleClickEvent() . Вот в этом топике есть пример перегрузки. Сделаете в наследованном классе сигнал, который передаст значение, поймайте этот сигнал и установите его в QComboBox.
по статье QDataWidgetMapper и делал. Не передает он значение. И вопрос с передачей переменных все равно остается открытым.
Ну так показывайте код, как делали формы, как пытались передать значение. Или я должен догадываться, что вы там понаписали, по одной только фразе "Не передает он значение" ? - Телепаты в отпуске.
выше я уже приводил код в котором формируется модель для данных в QComboBox. При открытии формы в QComboBox выводится запись с индексом 1, т.е. самая первая, а не выбранная в предыдущем окне. Вот код из первой формы, для формирования данных и их передачи:
Вот в этом коде вы выставляете mapper на самую первую позицию:
Mapper дёргает сразу всю таблицу, попробуйте выставлять нужную текущую строку через метод setCurrentIndex() или setCurrentModelIndex(). И ещё один такой момент для общего развития: QSqlQueryModel работает только на чтение, на запись она не работает. Просто помните про этот момент, когда будете с ней работать. Поэтому попытайтесь использовать QSqlRelationalTableModel, вместо QSqlQueryModel.
Дату и номер распоряжений можно выдернуть сразу из модели, задав соответствующую колонку в методе data() без каких-либо дополнительных запросов к базе данных через QSqlQuery.
Не уверен, когда ваш проблема пофиксится, но прежде чем до неё добраться, придётся поправить очень многие моменты, пока плаваете в методах моделей и дёргаете данные сырыми SQL запросами будет очень трудно фиксить те баги, которые создаёте.
Постарайтесь сейчас поправить те моменты, на которые я указал во всём коде.
Также сам проект ужасно организован. Директории obj и redit нужно как минимум перенести внутрь arhon. Либо сделать отдельным подключаемыми pri проектами.
Касательно QSqlRelationalTableModel и QSqlQueryModel - я в курсе, я их оба использую, что бы не позволять пользователю редактировать таблицы . Что же касается методов с использованием CurrentIndex тут я плаваю жутко. Как понять сырые SQL запросы? Что же касается даты и номера, спасибо что указали на ошибку. Тем более что метод data() я уже использовал. Касательно организации проекта, я сделал так для удобства работы с директорией проекта. в конце я это подправлю. У меня все также остается большой вопрос как организовать передачу номера и даты распоряжения в другую форму. Не хочу делать в каждой форме выборки из базы, а передовать их сквозь все необходимые формы. Вообще по проекту скажу - я в написании программ новичок и багов много. К сожалению у меня нет наставников и поэтому учусь по методу " Обезьяна с гранатой"
Под сырым SQL запросом я подразумеваю вот это:
Вы в обоих случаях дёргаете данные из таблицы "op", причём и id получаете из этой же таблицы. Если я правильно понял код, то можно сделать проще и менее чувствительно к ошибкам (ошибки в записи SQL запросов иногда не так просто заметить, к сожалению):
Чтобы передать эти значения в другую форму (теперь хоть стало понятно, что это отдельные диалоговые окна), можно сделать сигнал или принимающий метод, в котором будут нужные методы. В вашем случае есть диалог redit . Ну и добавьте в него метод setParamters(indr, rnum, rdat)
Тогда можно будет сделать что-то типо такого:
Идея примерно такая, поразбирайте её.
Структуру проекта лучше сразу поправить.
Значит я правильно понял про запросы. Спасибо что подсказали с передачей данных в другое окно я пробовал делать через emit sendData но к сожалению понял что не подходит этот метод. Буду причесывать запросы и разбираться с CurrentIndex() . Спасибо за консультацию
Но это не готовый рабочий код - это идея. Я подробно не разбирался в том, что вы написали и не вникал в смысл таблиц, тем более, что без базы данных такие баги фиксить дело неблагодарное. Поэтому поразмышляйте над этим кодом что я привёл в качестве возможного варианта.