Не понимаю, в одном проекте такой кусок кода работал с БД MSSQL, а здесь выдает ошибку, что в том проекте, я объявил глобальную переменную, что в этом, рез-т ошибка в этом случае
Memo1->Text = FDConnection1->ExecSQLScalar("select Исполнитель from Исполнители where id = "+test+"");
Не берет переменную, хотя в другом проекте, вот такой же код, даже с двумя переменными работает
Memo1->Text = FDConnection1->ExecSQLScalar("select вопрос from "+ntl+" where id = "+nq+"");
К базе подключено, если вместо переменной test, поставить цифру, то все работает, но мне нужен счетчик, в чем причина?
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int test = 1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Text = FDConnection1->ExecSQLScalar("select Исполнитель from
Исполнители where id = "+test+"");
test++ ;
}
Весь код
Код работающего примера, приведу отрывок, ибо слишком много кода, лишнее убрал
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//--------------------------------------------------------------------------
-
#pragma package(smart_init)
#pragma resource "*.dfm"
int nq = 1, c = 0, ot = 0,t = 0;
String nt;
String tab;
String ntl;
// Пройти тест
void __fastcall TForm1::N3Click(TObject *Sender)
{
nq = 1;
Label2->Caption = nq;
ntl = InputBox("Тест", "Введите имя", "");
Button8->Visible = true;
Memo1->Text = FDConnection1->ExecSQLScalar("select вопрос from "+ntl+" where
id = "+nq+"");
Button1->Caption = FDConnection1->ExecSQLScalar("select О1 from "+ntl+"
where id = "+nq+"");
Button2->Caption = FDConnection1->ExecSQLScalar("select О2 from "+ntl+"
where id = "+nq+"");
if (FDConnection1->ExecSQLScalar("select О3 from "+ntl+" where id = "+nq+"")
!= "")
{
Button3->Visible = true;
Button3->Caption = FDConnection1->ExecSQLScalar("select О3 from "+ntl+"
where id = "+nq+"");
}
if (FDConnection1->ExecSQLScalar("select О4 from "+ntl+" where id = "+nq+"")
!= "")
{
Button4->Visible = true;
Button4->Caption = FDConnection1->ExecSQLScalar("select О4 from "+ntl+"
where id = "+nq+"");
}
}
Если самый первый бинарный оператор +
в вашем выражении содержит объект типа String
в качестве одного из своих операндов, то используется перегруженный оператор +
для типа String
, который очевидно выполняет конкатенацию строк. Результат работы такого оператора очевидно имеет тип String
, то приводит к тому, что и все остальные операторы +
в выражении интерпретируются как тот же самый перегруженный оператор +
для типа String
. Именно поэтому работают ваши примеры с переменной ntl
, которая имеет тип String
.
В вашем ошибочном выражении
"select Исполнитель from Исполнители where id = "+test+""
тип String
не участвует вообще. В выражении участвуют только строковые литералы и целочисленные переменные. Выражение ошибочно, что вам компилятор ясно и сказал. Первый оператор +
в этом выражении еще формально корректен (хоть и делает совсем не то, что вы хотели), а вот второй уже совершенно не корректен.
Если вы хотите именно конкатенации строк (в т.ч. строковых представлений чисел), выполняемой оператором +
для типа String
, то позаботьтесь о том, чтобы с самого начала выражение вычислялось в рамках типа String
String("select Исполнитель from Исполнители where id = ") + test + ""
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите, пожалуйста, кто сталкивался, что делать? О какой библиотеке идет речь?
Всем приветИмеется программа моделирующая поведение системы n-тел во времени
Изучаю параллельное программирование (MPI)При попытке передать массив всем процессам с помощью функции MPI_Bcast, сталкиваюсь с тем, что его получает...
Можно ли объявлять классы внутри функций? А передавать созданные таким образом объекты в другие функции? Например, данный код выполняется,...