Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для HueJack
14 / 12 / 4
Регистрация: 20.10.2008
Сообщений: 91

Не понятное поведение DBLookupComboBox

28.11.2010, 17:24. Показов 1530. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, при написании проекта возникла необходимость изменять параметр DBLookupComboBox->KeyValue с другой формы. Это происходит так - на главной форме лежит DBLookupComboBox, данные в него берутся из одного датасета и происходит вставка при помощи другого. Т.е. DataList и DataSource заполнены. Есть вторая форма - форма выбора клиента. при выборе происходит следующее - берется ID выбранной записи и DBLookupComboBox на главной форме изменяется KeyValues. Значение в DBLookupComboBox меняется! Но при вставке обнуляется и в таблицу добавляется пустое значение. Я уже пробовал с той формы делать выборку в датасете по выбранной записи.. тоже не работает.. может кто нибудь уже сталкивался с этой проблемой?

Добавлено через 1 час 29 минут
Может быть можно сделать по другому? я знаю можно как то так Dataset->FieldByName("NameField")->As... = DBLooKup... , но у меня там в таблице много столбцов.. это все описывать очень долго будет(
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.11.2010, 17:24
Ответы с готовыми решениями:

Не понятное поведение Razor
Без условия работает <div class="navbar-right hidden-xs"> @Html.ActionLink("Заказать", "Index", "Cart", new {...

Curl не понятное поведение
Пытаюсь определить город по ip таким образом $link = 'http://ipgeobase.ru:7020/geo?ip='.$_SERVER; $ch = curl_init(); curl_setopt($ch,...

Не понятное поведение отчетов
Добрый день, может кто сталкивался с этой проблемой? При построении отчетной формы в FastReport нажимаю предпросмотр, отчет работает...

5
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
30.11.2010, 23:29
покажи свой код
0
 Аватар для HueJack
14 / 12 / 4
Регистрация: 20.10.2008
Сообщений: 91
02.12.2010, 07:36  [ТС]
На главной форме у меня есть переменная, допустим это А. При открытии формы добавления\редактирования для добавления в переменную ничего не заносится. В случае редактирования туда заносится значение ID редактуемой записи. На форме редактирования она получается extern a; А потом проверяется пусто или нет. Если нет, то выборка в датасете изменяется с Dataset->CommandText = "select * from tbl_Table where ID = '" + A + "'"; ну и в редактируемые поля заносятся значения. а кода как такогово нету. Там же датаконтролы используются, поэтому я и не стал ничего писать..
0
 Аватар для Lelik-pahan
1703 / 899 / 207
Регистрация: 25.11.2009
Сообщений: 1,848
02.12.2010, 17:08
Тогда проект покажи )
0
 Аватар для HueJack
14 / 12 / 4
Регистрация: 20.10.2008
Сообщений: 91
03.12.2010, 07:08  [ТС]
Проект выложить сейчас не могу. Ну как лучше такое реализовать подскажите) Особо интересует выбор в DBLookupComboBox)) Если выбирать просто в списке, то все работает, но допустим если в таблице несколько сотен записей, такой список будет нереально большой)
0
 Аватар для HueJack
14 / 12 / 4
Регистрация: 20.10.2008
Сообщений: 91
04.12.2010, 09:43  [ТС]
Еще раз здравствуйте, вот код. Это код на открытие формы редактирования, сюда передается AccountID. Если запись новая, то в нее записывается "NewLine", иначе ID записи, которую редактируют.

C++
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
void __fastcall TwndAccountEdit::btnOkClick(TObject *Sender)
{   if (AccountID != "NewLine") {
        ds_Account->Edit();
    }
    try{
        ds_Account->FieldByName("PrimaryContactID")->AsString = edtPrimatyContactID->KeyValue;
        ds_Account->Post();
    }
    catch(...){
        ShowMessage("Заполните все обязательные поля");
        return;
        }
    dm_Account->dsr_Account->DataSet->Close();
    dm_Account->dsr_Account->DataSet->Open();
    this->Close();
}
//---------------------------------------------------------------------------
 
void __fastcall TwndAccountEdit::FormShow(TObject *Sender)
{
    if (AccountID != "NewLine") {
        ds_Account->Close();
        ds_Account->CommandText = "select * from tbl_Account where ID ='" + AccountID + "'";
        ds_Account->Open();
    }
    else{
        ds_Account->Insert();
    }
}
Это код выбора контакта:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TwndContactGridArea::btnOkClick(TObject *Sender)
{      AnsiString  ContactID = dlContact->FieldByName("ID")->CurValue;
        Variant VarContactID = dlContact->FieldByName("ID")->CurValue;
       //   ShowMessage(VarContactID);
    if (ContactEditFlagContact == "ContactEdit") {
        wndContactEdit->edtOwnerID->KeyValue = ContactID;
 
    }
    if (AccountEdit == "PrimaryContactID") {
        wndAccountEdit->ds_PrimaryContact->Close();
 
        wndAccountEdit->ds_PrimaryContact->CommandText = "select ID, NameIngenitive from tbl_Contact where ID = '" + ContactID + "'";
        wndAccountEdit->ds_PrimaryContact->Open();
        wndAccountEdit->edtPrimatyContactID->KeyValue = ContactID;
Сюда передается переменная AccountEdit и если она равна PrimaryContact, то как раз вот и отрабатывает то, что нужно) По началу у меня работало просто
wndAccountEdit->edtPrimatyContactID->KeyValue = ContactID; а сейчас вот не ясно что такое случилось. но работать отказыввается(

Добавлено через 35 минут
В общем проблему я решил просто, но как то не очень красиво. На форме выбора
C++
1
2
3
4
5
6
if (AccountEdit == "PrimaryContactID") {
                wndAccountEdit->ds_PrimaryContact->Close();
 
                wndAccountEdit->ds_PrimaryContact->CommandText = "select ID, NameIngenitive from tbl_Contact where ID = '" + ContactID + "'";
                wndAccountEdit->ds_PrimaryContact->Open();
                wndAccountEdit->edtPrimatyContactID->KeyValue = ContactID;
А на форме редактирования делаю не
C++
1
ds_Account->FieldByName("PrimaryContactID")->AsString = edtPrimatyContactID->KeyValue;
, а вот из датасета значение беру, а DBLookupComboBox только для отображения используется
C++
1
ds_Account->FieldByName("PrimaryContactID")->AsString = ds_PrimaryContact->FieldByName("ID")->AsString;
Решение не очень красивое, как мне кажется, но по другому я что то даже сообразить не могу как..)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.12.2010, 09:43
Помогаю со студенческими работами здесь

Не понятное поведение BaseAdapter
Добрый день! Проблема в следующем: есть ListView, есть адаптер унаследованный от BaseAdapter. В адаптере в методе getView загружаю...

Не понятное поведение тернарного оператора
#include "stdafx.h" #include <initializer_list> #include <iostream> #include <algorithm> int mas =...

QString, юникод, и не понятное поведение
Известно что QString хранит символы юникода (16 бит как QChar). Но при использование (кодировка файла utf8 или cp1251 значения не имеет):...

Не понятное поведение диалогового окна из UI
Всем привет. Есть проблема, не корректно отображается окно JQuery UI. На локальном сервере все хорошо работает, а на хостинге ведет себя не...

jQuery.post не понятное поведение
Всем привет! с jQuery.post работаю впервые, возможно что то не до понимаю вообще так ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
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-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере 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 На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru