Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder и базы данных
Войти
Регистрация
Восстановить пароль
 
Hovercat
11 / 11 / 7
Регистрация: 23.12.2009
Сообщений: 300
#1

Ошибка - C++ Builder БД

08.06.2010, 23:56. Просмотров 964. Ответов 19
Метки нет (Все метки)

Выскакивает ошибка когда в ADODataSet1 Active ставлю true
Параметр TadeUnion.ID не имеет значения по умолчанию.
В ADODataSet1 в CommandText вписал:
SQL
1
SELECT * FROM Home, TradeUnion WHERE Home.ID=TadeUnion.ID;
В базе данных имеются таблицы
Home - Surname, FirstName, MiddleName, ID, Department, Position
TradeUnion - ID, Introduction
связаные по столбцу ID
http://www.cyberforum.ru/cpp-builder/thread729536.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2010, 23:56
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка (C++ Builder БД):

Ошибка в коде взаимодействия клиента и сервера на основе протокола TCP/IP (ошибка в коде)
Задание: Осуществить взаимодействие клиента и сервера на основе протокола...

IIS- asp ошибка: HTTP 500.100 - Внутренняя ошибка сервера - ошибка ASP Internet Information Services
Привет! Конфигурация win2000pro sp2, стандартный IIS, IE 5. При попытке...

Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка записи!
Доброго всем времени суток! подскажи пожалуйста как исправить ошибку: Ошибка...

Ошибка при добавлении в файл. Ошибка 101: Ошибка записи на диск (Error 101: Disk write error).
Здравствуйте, возникла проблема такого плана. Нужно произвести добавление...

Загружается до окна приветствия и вылетает ошибка: isass.exe - Системная ошибка
Ребята, помогите кто может... весь день бьюсь безрезультатно... с утра пришёл...

19
Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
09.06.2010, 18:28 #2
А Home.ID имеет значение по умолчанию ?
1
Hovercat
11 / 11 / 7
Регистрация: 23.12.2009
Сообщений: 300
09.06.2010, 19:14  [ТС] #3
Цитата Сообщение от Airhand Посмотреть сообщение
А Home.ID имеет значение по умолчанию ?
стоит "0"
0
Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
09.06.2010, 22:47 #4
Тогда у TadeUnion.ID тоже должно быть значение по умолчанию.
1
Hovercat
11 / 11 / 7
Регистрация: 23.12.2009
Сообщений: 300
09.06.2010, 23:52  [ТС] #5
Цитата Сообщение от Airhand Посмотреть сообщение
Тогда у TadeUnion.ID тоже должно быть значение по умолчанию.
значения и настройки в столбцах ид идентичны
0
Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
09.06.2010, 23:56 #6
Ты же в первом посте сказал, что у поля нет значения по умолчанию.
1
Hovercat
11 / 11 / 7
Регистрация: 23.12.2009
Сообщений: 300
10.06.2010, 00:11  [ТС] #7
Цитата Сообщение от Airhand Посмотреть сообщение
Ты же в первом посте сказал, что у поля нет значения по умолчанию.
ну в аксесе там стоит "0" я его не менял

Добавлено через 1 минуту
C++
1
2
3
4
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("INSERT INTRO CHILDREN VALUES('"DBEdit1->Text"','"DBEdit18->Text"','"DBEdit19->Text"','"DBEdit20->Text"','"DBEdit21->Text"')");
ADOQuery1->Open();
а что здесь не правильно написано?
0
Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
10.06.2010, 11:26 #8
Есть запросы, которые выполняются при помощи Open (всякие select), а у тебя другой запрос(всякие insert, update).

Добавлено через 4 минуты
Финальный запрос надо выполнять при помоши ExecSQL().
1
Hovercat
11 / 11 / 7
Регистрация: 23.12.2009
Сообщений: 300
10.06.2010, 16:57  [ТС] #9
Цитата Сообщение от Airhand Посмотреть сообщение
Есть запросы, которые выполняются при помощи Open (всякие select), а у тебя другой запрос(всякие insert, update).

Добавлено через 4 минуты
Финальный запрос надо выполнять при помоши ExecSQL().
а как это, через какой копонент?
0
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,803
Завершенные тесты: 1
10.06.2010, 17:00 #10
ADOQuery1->Open(); - использутеся для запросо, которые возвращают курсор на данные, т.е. select, остальные запросы сильно жаждуют метода ExecSQL().
1
Hovercat
11 / 11 / 7
Регистрация: 23.12.2009
Сообщений: 300
10.06.2010, 17:04  [ТС] #11
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
ADOQuery1->Open(); - использутеся для запросо, которые возвращают курсор на данные, т.е. select, остальные запросы сильно жаждуют метода ExecSQL().
а как переделать вот этот код, ато я не пойму:
C++
1
2
3
4
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("INSERT INTRO CHILDREN VALUES('"DBEdit1->Text"','"DBEdit18->Text"','"DBEdit19->Text"','"DBEdit20->Text"','"DBEdit21->Text"')");
ADOQuery1->Open();
0
Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
10.06.2010, 17:31 #12
Не нодо Open он делает то же самое, что и Active = true. Нужно ADOQuery там есть метод ExecSQL(). Прочитай про него в хелпе и все вопросы сами отпадут.
1
Hovercat
11 / 11 / 7
Регистрация: 23.12.2009
Сообщений: 300
10.06.2010, 17:57  [ТС] #13
Цитата Сообщение от Airhand Посмотреть сообщение
Не нодо Open он делает то же самое, что и Active = true. Нужно ADOQuery там есть метод ExecSQL(). Прочитай про него в хелпе и все вопросы сами отпадут.
Call ExecSQL to execute the SQL statement currently assigned to the SQL property. Use ExecSQL to execute queries that do not return a cursor to data (such as INSERT, UPDATE, DELETE, and CREATE TABLE).
ExecSQL returns an integer value reflecting the number of rows affected by the executed SQL statement.
Note: For SELECT statements, call Open instead of ExecSQL or set the Active property to true.
To speed performance, an application should ordinarily prepare the query by setting the Prepared property to true before calling ExecSQL for the first time.

пожалуйста пример, ато я с этого ничего не понял
0
Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
10.06.2010, 18:18 #14
Вот пример:
Код
dbf.Query->Active=false;
dbf.Query->SQL->Clear();
dbf.Query->SQL->Append(st);
try
{
    dbf.Query->ExecSQL();
}
catch(const Exception& e)
{
    Message("Runtime error: "+e.Message);
    return;
}
catch(...)
{
    return;
};
Добавлено через 2 минуты
dbf имеет следующий тип:
DBRequest dbf;
1
Hovercat
11 / 11 / 7
Регистрация: 23.12.2009
Сообщений: 300
10.06.2010, 19:03  [ТС] #15
Цитата Сообщение от Airhand Посмотреть сообщение
Вот пример:
Код
dbf.Query->Active=false;
dbf.Query->SQL->Clear();
dbf.Query->SQL->Append(st);
try
{
    dbf.Query->ExecSQL();
}
catch(const Exception& e)
{
    Message("Runtime error: "+e.Message);
    return;
}
catch(...)
{
    return;
};
Добавлено через 2 минуты
dbf имеет следующий тип:
DBRequest dbf;
оно мне ошибку выдало
[BCC32 Error] Unitl .cpp(35): E2451 Undefined symbol 'dbf'
[BCC32 Error] Unitl .cpp(37): E2451 Undefined symbol 'st'
[BCC32 Error] Unitl .cpp(44): E2268 Call to undefined function 'Message'
0
Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
10.06.2010, 23:50 #16
Конечно выдало, это ж пример того как надо писать, а не твоя прога.
st - это AnsiString с запросом, dbf - это DBRequest
Код
     class DBRequest
      {
      public:
          TADOQuery *Query;
          TADOStoredProc *Proc;
          TDBGrid *Grid;
          TDataSource *DataSource;
  TADODataSet *ADODataSet;
          DBRequest();
          ~DBRequest();
          bool InitDB(TADOConnection *con);
      };
, а Message - это левая функия, каторая выводит сообщение. Ты должен в своём примере сделать так: добавить на форму ADOQuery (или просто Query) и связать его со всеми компонентами.
Очистить его, добавить свой запрос и вызвать ExecSQL().
0
Hovercat
11 / 11 / 7
Регистрация: 23.12.2009
Сообщений: 300
10.06.2010, 23:56  [ТС] #17
Цитата Сообщение от Airhand Посмотреть сообщение
Очистить его, добавить свой запрос и вызвать ExecSQL().
я уже по другому сделал

подскажите пожалуйста как подключать компоненты DBLookupCombo1, DBLookupList1 в програме ато сам я не пойму а справка мне не помогла
0
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,803
Завершенные тесты: 1
11.06.2010, 10:23 #18
Hovercat, вам надо три свойства:
KeyField - ключевое поле, ListField - поля для отображения, ListSource - источник данных, а что у вас конкретно не выходит
0
Hovercat
11 / 11 / 7
Регистрация: 23.12.2009
Сообщений: 300
11.06.2010, 17:13  [ТС] #19
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
Hovercat, вам надо три свойства:
KeyField - ключевое поле, ListField - поля для отображения, ListSource - источник данных, а что у вас конкретно не выходит
подключаю DBLookupComboBox1: в инспекторе в
DataSource DataSource1 - куда будут заносится данные
DataField поле, которое будет изменяться поле в которое будут заносится данные
ListSource:=DataSource2 -откуда будут заносится данные
ListField поле которое будет отображатся в списке
KeyField поле которое будет вставлятся в DataSource1
все работает

когда хочу подключить DBLookupListBox1, DBLookupCombo1, DBLookupList1 то появляются ошибки:
LookupSource must be connected to TTable component.
может если б я знал что толком эти компоненты делают то мне бы было проще но
0
Lord_Voodoo
Супер-модератор
8607 / 2228 / 133
Регистрация: 07.03.2007
Сообщений: 10,803
Завершенные тесты: 1
12.06.2010, 16:41 #20
Hovercat, ну так DataSource должен быть завязан на какой-то источник данных (таблица или запрос)...

DataSource и ListSource вроде бы взаимо исключающие свойства, тобишь вам нужно только ListSource
0
12.06.2010, 16:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2010, 16:41
Привет! Вот еще темы с решениями:

Ошибка SQL запроса , в базе работает, а через IBQuery в Delphi ошибка
В Combobox загружены имена организаций. Нужно выполнить запрос на вывод всех...

Ошибка разбора XML/ Ошибка при вызове метода контекста (Прочитать)
1C 8.2 Документооборот КОРП 1.2 Текст ошибки...

Django Ошибка доступа (403) Ошибка проверки CSRF. Запрос отклонён
На хостинге разместил сайт и не могу войти в админку, т.к. возникает 403 ошибка...

Ошибка HTTP 500 - внутреняя ошибка сервера при отправке почты.
Я пытаюсь отправить почту и присоединяю к ней письма Вот часть страницы Dim...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru