Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ComboBox есть проблема.

5.4K
22 мая 2004 года
shur_a1981
18 / / 19.05.2004
Подскажите пожалуйста.
Я создаю динамически базу данных.
И мне надо чтобы все столбцы этой базы были видны в combobox.
И ещё вопросик.
Как сделать чтобы эти же поля отображались в
Form1->Query1->SQL.
Заранее спасибо.
293
23 мая 2004 года
SEDEGOFF
586 / / 06.10.2002
Если я правильно тебя нонял, то, например, ты создал таблицу Partner со столбцами ID, NAME, SUMM и эти столбцы должны попасть в комбо. Тогда делай так

Query1->SQL->Text = "select * from post";
Query1->Open();
Query1->First();
for(int i = 0; i < Query1->Fields->Count; i++)
ComboBox1->Items->Add(Query1->Fields->Fields->FieldName);

Query1->Close();
5.4K
23 мая 2004 года
shur_a1981
18 / / 19.05.2004
Мне нужно именно это.
Но остаётся вопрос как эти же столбцы
добавить в Query1->SQL
т.е поместить запрос к этой базе что-то вроде
(перечисление полей SELECT * FROM некая база)

строки в Query1->SQL пытаюсь прописать так
Query1->Active = false;
Query1->DatabaseName = Table1->DatabaseName;
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("SELECT * FROM название базы");
Query1->Active = true;

как можно сделать чтобы при открытии ДБ ее название попадало бы в
SELECT * FROM XXX - в это место".
Т.к название базы постоянно меняется и меняется соответсвенно и поля и их количество.

Пытался заполнить Query1->SQL таким циклом
for (iCounter = 0; iCounter < Query1->SQL->Count - 1; iCounter++)
{ Query1->SQL->Strings[iCounter];}
Но пишет что база не определена.
Как быть?
293
23 мая 2004 года
SEDEGOFF
586 / / 06.10.2002
Я так понимаю у тебя есть список таблиц и ты хочешь их открывать? Если да, то
Query1->Close();
Query1->SQL->Text = "select * from "+ComboBox1->Text;
Query1->Open();
5.4K
24 мая 2004 года
shur_a1981
18 / / 19.05.2004
Не совсем так.
Я открываю БД
Table1->DatabaseName = "c:";
Table1->TableName = OpenDialog1->FileName;

После чего мне надо чтобы имя базы попало в
Query1->SQL->Text = "select * from" + i;
где i - имя базы.
пытался AnsiString i = Table1->TableName;

и так пробовал
Query1->SQL->Text = "select * from" + OpenDialog1->FileName;

Пытался
Query1->SQL->Add("select * from " + Table1->TableName);

Но не получается постоянно ошибка.
Где ошибка?
293
24 мая 2004 года
SEDEGOFF
586 / / 06.10.2002
Что за ошибка

Вот этот код должен работать

if(OpenDialog1->Execute())
{
Query1->DatabaseName = ExtractFilePath(OpenDialog1->FileName);

Query1->SQL->Text = "select * from" + ExtractFileName(OpenDialog1->FileName);
Query1->Open();

}
5.4K
24 мая 2004 года
shur_a1981
18 / / 19.05.2004
Всё супер. Работает.
Большое спасибо. Не знаю как вас благодарить.

Если не сложно, не подскажете ещё, как информацию,
хранящуюся в DBGride отправить на печать.
Всю информацию или только выделенные строки (мультиселект)?
5.4K
24 мая 2004 года
shur_a1981
18 / / 19.05.2004
Подскожите ещё пожалуйста как это
+ ExtractFileName(OpenDialog1->FileName);
вставить в середину SQL запроса?

tmp.printf("SELECT * FROM XXX WHERE %s LIKE \"%s\%\"",ComboBox1->Text.c_str(),Edit1->Text.c_str());
Вместо XXX
293
24 мая 2004 года
SEDEGOFF
586 / / 06.10.2002
Цитата:
Originally posted by shur_a1981
Подскожите ещё пожалуйста как это
+ ExtractFileName(OpenDialog1->FileName);
вставить в середину SQL запроса?

tmp.printf("SELECT * FROM XXX WHERE %s LIKE \"%s\%\"",ComboBox1->Text.c_str(),Edit1->Text.c_str());
Вместо XXX



Используй функцию StringReplace.
Про нее все в хелпе описано, но на всякий случай
[COLOR=darkblue]
String result = StringReplace(" Это строка где мы заменим цифру 1", "Yf 'ne cnhjre vs tt pfvtybv","1", TReplaceFlags()<<rfReplaceAll);
[/COLOR]

А по поводу печати. Тебе нужно или самому формировать страницу для принтера или использовать QuickReport, FastReport для создания отчета. Так же обрати внимание на грид EhLib - он позваляет печатать данные из грида

10
24 мая 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by shur_a1981
Подскожите ещё пожалуйста как это
+ ExtractFileName(OpenDialog1->FileName);
вставить в середину SQL запроса?

tmp.printf("SELECT * FROM XXX WHERE %s LIKE \"%s\%\"",ComboBox1->Text.c_str(),Edit1->Text.c_str());
Вместо XXX


Так будет лучше всего:

 
Код:
tmp.printf("SELECT * FROM %s WHERE %s LIKE \"%s\%\"",
  ExtractFileName(OpenDialog1->FileName),
  ComboBox1->Text.c_str(),
  Edit1->Text.c_str());
5.4K
25 мая 2004 года
shur_a1981
18 / / 19.05.2004
Да. Спасибо.
Так как ты написал заработало.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог