powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Select в ADOQuery C++ XE3
50 сообщений из 50, показаны все 2 страниц
Select в ADOQuery C++ XE3
    #38114800
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем дня!
Решили на работе перейти с Access на SQL! Все бы хорошо, только в билдере я практически ноль!
Только начал, а уже возникла проблема в C++ - не могу заставить запрос в ADOQuery работать! Знаю что скорее всего в что-то не дописываю, только никак понять не могу, много книг перерыл, форумов- толку нет!
Короче смысл таков: надо чтобы запрос выводил по значению в DBComboBox2 столбец со значениями из таблицы Dannie в DBComboBox1! Значения в DBComboBox2 я прописал в свойстве String.
Запрос у меня простенький и в самом SQL все работает правильно:SELECT Naimenovanie FROM Dannie WHERE Tematika = Tematika;
В свойство Parameters внес параметр Tematika.
На событые OnDropDown поля DBComboBox2 я прописал следующее:

void __fastcall TForm5::DBComboBox1DropDown(TObject *Sender)
{
ADOQuery2->Active = False;
ADOQuery2->Parameters->ParamByName("Tematika")->Value = DBComboBox2->Text;
ADOQuery2->Active = True;
}

Все подключено к базе через ADOConnection (строки из таблиц выводит=)))
Уже целую неделю пытаюсь понять - безрезультатно!
Кто чем может помочь - прошу! На все вопросы отвечу!
Заранее спасибовсем откликнуышимся!
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38114914
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstA,

попробуй что-то в этом духе (правда в билдере не проверял, нет под рукой)
Только не понятно, тебе в ComboBox1 нужно вывести разовое значение, или накапливать их там списком при каждом выборе в ComboBox2.
Если разово, то зачем ComboBox, можно обойтись каким-нибудь TEdit или Tlabel

void __fastcall TFormMain::ComboBox1Change(TObject *Sender)
{

AnsiString SQLStr;
SQLStr = "select Naimenovanie from Dannie where Tematika = \'" + ComboBox2->Text +"\'";
if(Query->Active) Query->Close();
Query->SQL->Clear();
Query->SQL->Add(SQLStr);
try
{
Query->Open();
Query->First();
ComboBox1->Text = Query->FieldByName("Naimenovanie ")->AsString;
}
catch(...){ShowMessage("Error");}
if(Query->Active)Query->Close();

}
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38115032
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baby1,

В ComboBox2 будет выводиться список значениий всех строк из таблицы Dannie у которых Tematika равна значению из ComboBox1. В таблице Dannie уже забиты готовые значения!
Может я что-то усложняю и можно сделать проще?
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38115157
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstA,

тогда в предыдущем примере в try будет что-то вроде
try
{
Query->Open();
Query->First();
while(!Query->Eof)
{
ComboBox1->Items->Add(Query->FieldByName("Naimenovanie ")->AsString);
Query->Next();
}
}
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38115236
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял задачу, то лови работающий кусок:
при нажатии на кнопку коннектимся к БД, при выборе записи в одном боксе, приходят значения во второй

#include <vcl.h>
#pragma hdrstop
#include <ADODB.hpp>


#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TADOConnection *Conn;
TADOQuery *Query;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtnConnClick(TObject *Sender)
{
AnsiString ConnectionString;
ConnectionString = "Provider=SQLOLEDB.1;"
"Password=password;"
"Persist Security Info=True;"
"User ID=userid;"
"Initial Catalog=databasename;"
"Data Source=servername" ;

Conn = new TADOConnection(NULL);
Conn->ConnectionString = ConnectionString;
Conn->LoginPrompt = false;
Conn->Open();

}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox2Change(TObject *Sender)
{

AnsiString SQLStr;
ComboBox1->Items->Clear();
Query = new TADOQuery(NULL);
if(Query->Active) Query->Close();
Query->Connection = Conn;
SQLStr = "select field2 from TableTest where field1 = \'" + ComboBox2->Text +"\'";
if(Query->Active) Query->Close();
Query->SQL->Clear();
Query->SQL->Add(SQLStr);
try
{
Query->Open();
Query->First();
while(!Query->Eof)
{
ComboBox1->Items->Add(Query->FieldByName("field2")->AsString);
Query->Next();
}
ComboBox1->ItemIndex = 0;
}
catch(...){ShowMessage("Error");}
if(Query->Active)Query->Close();

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if(Query->Active) Query->Close();
delete Query;
if(Conn->Connected) Conn->Close();
delete Conn;

}

...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38115244
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот это лучше вынести в TForm1::BtnConnClick
Query = new TADOQuery(NULL);
if(Query->Active) Query->Close();
Query->Connection = Conn;

нефига при каждом выборе создавать новый Query
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38118962
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baby1, спасибо огромаенное! Заработало!
У меня не работало потому что я в AnsiString не перевел чтоли?
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38119610
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstA,
Если честно, я вообще не разбирался в твоем коде... просто написал так, как это сделал бы я... не ручаюсь за красоту кода, наверняка можно написать гораздо лучше, но пример работающий..
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38119612
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.рад, что смог помочь
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38128186
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжаю работать над своим чудом и возникло еще пару вопросов:
1. При вставке с помощью запросов значений в некоторые поля DBEdit и DBMemo при повторном нажатии на них (допустим чтобы скопировать полученное значение) значение пропадает! Может кто сталкивался с таким!?
2. Как можно вырвать имя пользователя который последний раз работал/изменял данную запись (хочу чтобы отображался последний кто изменял данное поле).
Baby1 , жаль плюсануть не могу=)
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38129581
BlackEric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstA,

Код покажите? Если пропадает, то либо перескакивает курсор в датасете либо данные не сохраняются
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38130311
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackEric,

Вот код вставки св-ва FileName из OpenDialog:
void __fastcall TForm6::Button1Click(TObject *Sender)
{
if (Form6->OpenDialog1->Execute())
{
Form6->DBMemo1->Text = Form6->OpenDialog1->FileName;

Использовал АДОQuery и АDOTable, но сейчас думаю что надо DataSet и Command использовать, а то выскакивает ошибка поиска строк для обновления!
Причем у созданных далее 2-х записей такой проблемы нет. А вот 4 делаю там такая же фигня!
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38131051
BlackEric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstABlackEric,

Вот код вставки св-ва FileName из OpenDialog:
void __fastcall TForm6::Button1Click(TObject *Sender)
{
if (Form6->OpenDialog1->Execute())
{
Form6->DBMemo1->Text = Form6->OpenDialog1->FileName;

Использовал АДОQuery и АDOTable, но сейчас думаю что надо DataSet и Command использовать, а то выскакивает ошибка поиска строк для обновления!
Причем у созданных далее 2-х записей такой проблемы нет. А вот 4 делаю там такая же фигня!

1. Забудьте про АDOTable. Используйте датасет.
2. Присваивайте данные не компоненту, а полю датасета к которуму забинден компонент и делайте Post. Тогда все должно быть корректно.

...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38132036
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2. Присваивайте данные не компоненту, а полю датасета к которуму забинден компонент и делайте Post. Тогда все должно быть корректно.

Можешь показать маленький примерчик, а то в моих конспектах с института такого нет)))
Спасибо заранее!
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38133795
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstAПродолжаю работать над своим чудом и возникло еще пару вопросов:
2. Как можно вырвать имя пользователя который последний раз работал/изменял данную запись (хочу чтобы отображался последний кто изменял данное поле).


Как вариант, вести в таблице поле, в котором хранить данные о создавшем/изменившем запись.
При вставке/изменении записи в таблице прописывать в него соответствующую информацию. Я обычно пишу SYSTEM_USER(значение текущего имени входа). Еще обычно требуется дата последнего изменения.
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38137406
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baby1,
Сделал вот такой триггер который при добавлении или изменении строки в таблице Proshivki2 заносит имя и дату изменения в таблицу UpdateProshivki1:

ALTER TRIGGER updatedby4 ON Proshivki2

FOR INSERT, UPDATE

AS

INSERT INTO UpdateProshivki1 (ID, UpdateDate, UpdatedBy)

SELECT ID, getdate(), SYSTEM_USER

FROM inserted

Дальше у меня возникла проблема как выводить ID изменений UpdateProshivki1 соответствующих ID строк таблицы Proshivki2 (чтобы в форме выводились только изменения сделанные над данной записью)??
Можно как-то в триггере прописать?или надо запрос на DBGrid писать?
Спасибо!
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38137675
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
-- test data
declare @Proshivki2 table(ID int, name varchar(30))
insert into @Proshivki2(ID, name)
values (1, 'item1')
      ,(2, 'item2')
      
declare @UpdateProshivki1 table(ID int, UpdateDate date, UpdatedBy varchar(30))
insert into @UpdateProshivki1(ID, UpdateDate, UpdatedBy)
values (1, '20130101', 'user1')
      ,(1, '20130201', 'user3')
      ,(2, '20130102', 'user1')
      ,(2, '20130103', 'user2')
-- end of test data

select P.ID
      ,P.name
      ,U.UpdateDate
      ,U.UpdatedBy
  from @Proshivki2 as P
  outer apply (select top 1 UP.UpdateDate, UP.UpdatedBy
                 from @UpdateProshivki1 as UP
                where UP.ID = P.ID
                order by UP.UpdatedBy desc) as U

Код: sql
1.
2.
3.
4.
5.
6.
ID          name                           UpdateDate UpdatedBy
----------- ------------------------------ ---------- ------------------------------
1           item1                          2013-02-01 user3
2           item2                          2013-01-03 user2

(2 row(s) affected)
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38139398
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сделал проще:
Создал триггер на занесение в стороннюю таблицу данных по изменению:

[/SRC]ALTER TRIGGER updatedby4 ON Proshivki2

FOR INSERT, UPDATE

AS

INSERT INTO UpdateProshivki1 (ID, UpdateDate, UpdatedBy)

SELECT ID, getdate(), SYSTEM_USER

FROM inserted[/SRC]

А потом в билдере по запросу выбираю соответствующие поля!
Но спасибо за ответ, твой вариант с переменными таблицами попробую реализвать))
Кто-нибудь знает как в DBComboBox разрешить только забитые в него значения?Чтобы небыло вырианта что-то писать!
Пробовал на события ставить ReadOnly=true , но все-ровно в некоторых случаях можно оставить пустую строку или написать отсебятину!
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38139511
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstAКто-нибудь знает как в DBComboBox разрешить только забитые в него значения?Чтобы небыло вырианта что-то писать!


ComboBox->Style = csDropDownList;
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38139584
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstAА потом в билдере по запросу выбираю соответствующие поля!по какому запросу?
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38141074
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT UpdateDate, UpdatedBy FROM UpdateProshivki1 WHERE ID = " + DBEdit5->Text
Вот такой запрос сравнивает ID который в Edit и выводит соответствующие записи!
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38141378
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, значит я неправильно понял задачу
я думал, что FOGOT-BAstAстрок таблицы Proshivki2в Вашем диалоге несколько (грид там или типа того)
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143040
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хахаха наверное дсотал тупыми вопросами всех уже=))) Но нужна подсказочка для решения такой задачи:
Есть одна форма в С++ на которой будет работать 5-6 ОДНОТИПНЫХ таблиц (все столбцы идентичны по названию, кроме поля ID). Т.к. поля одинаковые, я хочу в зависимости от выбранного поля Тематика (опять оно=)))) выбирать конкретную такблицу! Пробовал реализовать (по-тупому) с помощью датасета и условий if-else, сравнивая из выбранного значения DBComboBox и подставляя соответствующие названия таблиц в CommandText компонента DataSet
ADODataSet1->Close();
if (DBComboBox1->Text == "Комбайн")
{
ADODataSet1->Edit();
ADODataSet1->CommandText ="Kartochka_Kombain";
ADODataSet1->Open();
}
else if (DBComboBox1->Text == "Трактор")
{
ADODataSet1->Edit();
ADODataSet1->CommandText="Kartochka_Traktor";
ADODataSet1->Open();
}
else if (DBComboBox1->Text == "АГСЭ")
{
ADODataSet1->Edit();
ADODataSet1->CommandText="Kartochka_AGS";
ADODataSet1->Open();
}
else if (DBComboBox1->Text == "АДАСЭ")
{
ADODataSet1->Edit();
ADODataSet1->CommandText="Kartochka_ADAS";
ADODataSet1->Open();
}
else if (DBComboBox1->Text == "УКЭД")
{
ADODataSet1->Edit();
ADODataSet1->CommandText="Kartochka_YKED";
ADODataSet1->Open();
}
else if (DBComboBox1->Text == "УКТУС-ТМ")
{
ADODataSet1->Edit();
ADODataSet1->CommandText="Kartochka_YKTYS";
ADODataSet1->Open();
}
else if (DBComboBox1->Text == "УКШ")
{
ADODataSet1->Edit();
ADODataSet1->CommandText="Kartochka_YKSH";
ADODataSet1->Open();
}
else
{
ShowMessage("Выберите тематику из списка! Иначе обратитесь к Администратору!");
}
но не работает, то пишет что невозможно править датасет т.к. он закрыт, то открыт, и самое главное DBComboBox не вставляет значения пока ДатаСет не активирован...короче перепробовал открывать, закрывать по созданию, вставлять принудительно название таблиц в CommandText все тщетно...
Спасибо заранее!=)))
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143082
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обратитесь к тому, кто проектировал Вашу БД и спросите - а зачем это он создал 6 однотипных таблиц вместо одной?
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143091
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дак это я и есть=))))Хочу унифицировать, что бы не создавать 6 форм, а использовать 1=)))
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143099
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если в одну таблицу все запихнуть, то как с 1 поля, допустим DBEdit, заносить в разные поля таблицы?
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143111
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstA,
а не проще иметь одну таблицу с доп. полем "Тематика", где и прописывать к чему относятся данные в строке, к тракторам или к комбайнам?
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143114
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс, обновляется медленно)))) не успеваю за всеми постами
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143118
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstAа если в одну таблицу все запихнуть, то как с 1 поля, допустим DBEdit, заносить в разные поля таблицы?
в смысле? кидай структуру пары таблиц и что у тебя в Edit пишется. Посмотрим что к чему
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143136
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ввести поле type_id, где указывать, что это за запись - комбайн, трактор или еще что
В результатеFOGOT-BAstAа если в одну таблицу все запихнуть, то как с 1 поля, допустим DBEdit, заносить в одно поле таблицы?поправил
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143164
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДУмаю что 1-ой таблицей не обойтись т.к. там 2 ключевых поля (ID и ZavNomer - не должны повторятся). Поэтому я и разбил на 7 таблиц, чтобы избежать путаницы в дальнейшем. Вот структура 2-х таблиц:
Таблица Kartochka_AGS:
ID_AGS int Unchecked
Tematika varchar(50) Checked
Naimenovanie varchar(50) Checked
DecNomer varchar(50) Checked
ZavNomer int Checked
MadeBy varchar(50) Checked
DateNastroyka date Checked
Mesto varchar(50) Checked
Montazh varchar(50) Checked
Vers_Programm varchar(50) Checked
FIO_Programm varchar(50) Checked
Zam_Programm varchar(100) Checked
Date_Programm date Checked
Sdelano_Programm varchar(100) Checked
FIO_Progon varchar(50) Checked
Zam_Progon varchar(100) Checked
Date_Progon date Checked
Sdelano_Progon varchar(100) Checked
FIO_Funct varchar(50) Checked
Zam_Funct varchar(100) Checked
Date_Funct date Checked
Sdelano_Funct varchar(100) Checked
FIO_PSI varchar(50) Checked
Zam_PSI varchar(100) Checked
Date_PSI date Checked
Sdelano_PSI varchar(100) Checked
Sklad bit Checked
Vladelec varchar(50) Checked

Таблица Kartochka_ADAS
ID_ADAS int Unchecked
Tematika varchar(50) Checked
Naimenovanie varchar(50) Checked
DecNomer varchar(50) Checked
ZavNomer int Checked
MadeBy varchar(50) Checked
DateNastroyka date Checked
Mesto varchar(50) Checked
Montazh varchar(50) Checked
Vers_Programm varchar(50) Checked
FIO_Programm varchar(50) Checked
Zam_Programm varchar(100) Checked
Date_Programm date Checked
Sdelano_Programm varchar(100) Checked
FIO_Progon varchar(50) Checked
Zam_Progon varchar(100) Checked
Date_Progon date Checked
Sdelano_Progon varchar(100) Checked
FIO_Funct varchar(50) Checked
Zam_Funct varchar(100) Checked
Date_Funct date Checked
Sdelano_Funct varchar(100) Checked
FIO_PSI varchar(50) Checked
Zam_PSI varchar(100) Checked
Date_PSI date Checked
Sdelano_PSI varchar(100) Checked
Sklad bit Checked
Vladelec varchar(50) Checked

Они одинаковые кроме 1 поля ID. Если делать одну таблицу то как избежать повторяющихся значений в поле ZavNomer, а если делать 7 таблиц то как к ним достучаться из одной формы С++??=)))) Геморрррр...
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143174
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstA,
Добавить на них ограниченние на уникальность данных. А на ID вообще можно счетчик впихнуть, типа нумеруем все строки по порядку и точка.
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143186
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baby1,
Счетчик стоит! А как сделать на уникальность, можно рассказать или ссылку почитать?=)))Если это ключ, то не подойдет...
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143204
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstAкак избежать повторяющихся значений в поле ZavNomerгенерировать уникальные значения
что за СУБД?
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143231
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstABaby1,
Счетчик стоит! А как сделать на уникальность, можно рассказать или ссылку почитать?=)))Если это ключ, то не подойдет...
Это зависит от СУБД. А вообще в поле ZavNomer данные как попадают? Пользователи руками вносят или его можно генерировать автоматически по какому-то принципу, главное чтоб уникальность отслеживалась?
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143347
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baby1,
MIcrosoft SQL 2012, вносить должны руками!Может быть около 30 раз одно и тоже значение придется вносить, т.к. еще наименований в одной тематике очень много и у каждого свои завномера!
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38143351
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstAкак избежать повторяющихся значений в поле ZavNomerFOGOT-BAstAMIcrosoft SQL 2012, вносить должны руками!unique constraint
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38145484
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,
Не доганяю в чем будет уникальность поля если я сделаю его UNIQUE??Ведь значения смогут повторяться, а мне надо чтобы в одном наименовании мог быть только одна запись с конкретным номером!!
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38145497
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstAПаганель,
Не доганяю в чем будет уникальность поля если я сделаю его UNIQUE??Ведь значения смогут повторяться, а мне надо чтобы в одном наименовании мог быть только одна запись с конкретным номером!!
Значения повторяться НЕ смогут при таком ограничении. Если пользователь попытается ввести в поле значение, которое уже существует, то получит ошибку
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38145566
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, а мне надо чтобы в конкретном наименовании заводские номера не повторялись, а не то что вообще!
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38145586
Baby1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит ограничение уникальности нужно добавить на совокупность столбцов Наименование и Заводской номер
Почитай вот тут http://msdn.microsoft.com/ru-ru/library/ms190024.aspx#TsqlProcedure
Второй пример как раз твой случай
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38145645
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baby1,
Ты реально мой спаситель)))Громедное спасибо!
Паганель, Тебе тоже большая благодарность!

Я уже начал процедуры писать))))
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38156956
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и снова я=)))
Короче ситуация следующая: Есть DBCheckBox, по нажатии на него (когда в состоянни Active переводится) надо чтобы в другую таблицу заносились поля ID и ZavNomer из действующей таблицы (чтобы была связь между таблицами)!
Сделал такой вот запрос:
INSERT INTO Sklad (ID_Sklad, ZavNomer) SELECT Kartochka.ID_Kartochka, Kartochka.ZavNomer FROM Kartochka INNER JOIN Sklad ON Kartochka.ID_Kartochka = Sklad.ID_Sklad
Не робит=)))) Точнее в SQL пишет что
В таблицу Kartochka так же есть битовое поле Sklad которое становится либо 1 либо 0 в зависимости от состояния DBCheckBox'a - может как-то можно плясать от этого?
Короче как всегда я открыт для предложений!
Заранее спасибо всем добрякам!!!
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38156973
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstAв SQL пишет что
В таблицу Kartochka так же есть битовое поле Sklad которое становится либо 1 либо 0 в зависимости от состояния DBCheckBox'aтак и пишет? не верю! приведите, пожалуйста, оригинальный текст ошибки
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38157186
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В режиме отладки С++ возвращает ошибку:
'CommandText does not return a result set'
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38157189
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так это проблема не SQL а С++
Какой класс и как именно используете для выполнения INSERT ?
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38157288
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПаганельТак это проблема не SQL а С++
Какой класс и как именно используете для выполнения INSERT ?
С помощью метода, описанного Baby1 (2 пост на 1 странице).
Может что-то накосячил, но ща не буду разбираться, только завтра...
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38157336
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38158431
FOGOT-BAstA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель Table 23.1 ADO components
Можно хотябы конекретизировать поиск? А то на инглише лопатить 10 страниц неохота!! Что искать-то?
Вставил данный запрос в ДатаСет и начал выдавать таку же ошибку!
Вот такая мысль: запрос пытается вставить значение в таблицу по ID, но в таблице Sklad пустое значение ID и он не может сопоставить значения??
...
Рейтинг: 0 / 0
Select в ADOQuery C++ XE3
    #38158594
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FOGOT-BAstAПаганель Table 23.1 ADO components Можно хотябы конекретизировать поиск?Конкретизирую: смотри таблицу 23.1
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Select в ADOQuery C++ XE3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]