MySQL + Bilder 6
Как к Мускулевской таблице обратиться и Как получить из неё данные!!!???!!!(если можно подробно)(или ссылочки)
если все сделал как я говорил: установил дрова, прописал источник данных, поставил на форму компонент ADOTable и прописал в нем ранее созданный источник и имя таблицы, то надо поставить в этом компоненте Active=true - таблица откроется...
потом нужно поставить компонент TDataSource и в нем прописать твой TADOTable, а потом, этот TDataSource прописать в каком-нибудь визуальном компоненте, например TDBGrid...
обращение к полям таблицы:
ADOTable1->FieldByName("FieldName")->Value
Мне надо Таблицу(знчения некоторых полей) вывести на экран в полноэкранном режиме .Вот!
не погу понять как Запрос создать ,
Тма есть и ADOCommand, ADODateset и т.д Просто в помаши на Англицком мне не оч понятно я вот и исчу на русском помощь или тип того или чтоб кто нить обьяснил если можно с примером.
с дровами я так и сделал
Мне надо Таблицу(знчения некоторых полей) вывести на экран в полноэкранном режиме .Вот!
не погу понять как Запрос создать ,
Тма есть и ADOCommand, ADODateset и т.д Просто в помаши на Англицком мне не оч понятно я вот и исчу на русском помощь или тип того или чтоб кто нить обьяснил если можно с примером.
Не очень понятно, чего надо - составить запрос или вывести в полноекранном режиме? ИМХО задачи абсолютно разные. Использовать компоненты типа TADOTable - как говорится на вкус и цвет...но я например избегаю, если это только полностью и бесповоротно не решает ВСЕХ задач. Обрисуй подробнее задачу - у меня некоторые программы работают через АДО - могу скинуть пример. И обычно использую что нибудь типа TADOStoredProcedure - все отрабатывает на ура. А не работать на прямую с таблицами в базе - это классика. И пренебрегать этим не стоит. Проблем будет больше.
Не очень понятно, чего надо - составить запрос или вывести в полноекранном режиме? ИМХО задачи абсолютно разные. Использовать компоненты типа TADOTable - как говорится на вкус и цвет...но я например избегаю, если это только полностью и бесповоротно не решает ВСЕХ задач. Обрисуй подробнее задачу - у меня некоторые программы работают через АДО - могу скинуть пример. И обычно использую что нибудь типа TADOStoredProcedure - все отрабатывает на ура. А не работать на прямую с таблицами в базе - это классика. И пренебрегать этим не стоит. Проблем будет больше.
а что за проблемы будут? я сам, если честно, чаще пользуюсь TADOQuery, но и TADOTable иногда - и каких-то неразрешимых проблем не встречал...
а что за проблемы будут? я сам, если честно, чаще пользуюсь TADOQuery, но и TADOTable иногда - и каких-то неразрешимых проблем не встречал...
Прошу прощения - не верно выразился - про проблемы. Это относится к работе напрямую с таблицами, а не непосредственно к компоненту :) - достаточно не редкая ситуация, когда в процессе работы программы выясняется, что надо бы изменить X на Y - предположим вместо одного столбца надо выводить другой, ситуация далеко не самая редкая - тип данных тот же, по сути данные те же. Если работаешь через запрос или ХП - не проблема. Если работаешь прямо с таблицей - это перекомпиляция модуля как минимум. Я не имею ввиду, что проблема страшная - у меня вон чудо сидит - лопатит свой басиковский проект три раза в день, он уже и сам помоему одурел - по 50 столбцов в таблице, реально из них работает до 10 - и ему ничего.:) Лишние пятнатцать минут перекура.
Прошу прощения - не верно выразился - про проблемы. Это относится к работе напрямую с таблицами, а не непосредственно к компоненту :) - достаточно не редкая ситуация, когда в процессе работы программы выясняется, что надо бы изменить X на Y - предположим вместо одного столбца надо выводить другой, ситуация далеко не самая редкая - тип данных тот же, по сути данные те же. Если работаешь через запрос или ХП - не проблема. Если работаешь прямо с таблицей - это перекомпиляция модуля как минимум. Я не имею ввиду, что проблема страшная - у меня вон чудо сидит - лопатит свой басиковский проект три раза в день, он уже и сам помоему одурел - по 50 столбцов в таблице, реально из них работает до 10 - и ему ничего.:) Лишние пятнатцать минут перекура.
честно говоря, что-то я все равно не догоняю... может просто вечер - я заметил, вечером у меня мозг тормозит :)... пусть даже работаешь с таблицей напрямую - можно ведь динамически в программе менять отображаемый столбец, их количество и т.п.
честно говоря, что-то я все равно не догоняю... может просто вечер - я заметил, вечером у меня мозг тормозит :)... пусть даже работаешь с таблицей напрямую - можно ведь динамически в программе менять отображаемый столбец, их количество и т.п.
Ну например? На этапе разработки использовался столбец "Field", спустя полгода-год ввели новый столбец - старый переименовали, по целому ряду причин. :) Если это рабочая база - можно привести 1001 причина по которой эта операция нужна - и никого не волнуют проблемы программиста.
Если пользовать конструкцию вида
SELECT Field FROM Table ... необходимо перекомпилировать как минимум ту делку в которой это забито. Что такое внести изменения даже в простую программу спустя полгода-год как работа над ней завершена? - иногда это проходит без проблем.
если же это выглядит так
SELECT Field FROM Query ... все переделка сводится к изменеию хранимого запроса, что занимает порядка 5 минут - из них 3 на закрытие-открытие базы.
Мне надо накодить прогу которая: в MySQL базы берёт значения из таблицы (телепрограмма) и на фоне картинки показывает их!Понятно ПОЛУЧАЕТСЯ типа слад_шоу с текстом из базы поверх.ВОТ!!
Делается без проблем - используешь компонент для работы, например из палитры dbExpress - получаешь в него данные - а дальше - дальше все очень просто организововашь цикл -
- и считывашь данные. Можешь использовать их прямо на канву -
Можно загонять туда куда тебе нужно. Естественно, перед этим на канве нужно разместить твое изображение и отслеживать координаты формы.
Кстати, орать в теме не обязательно и даже не нужно. Использование CAPSLOCK не есть признак крутого "кодера" :)
Делается без проблем - используешь компонент для работы, например из палитры dbExpress - получаешь в него данные - а дальше - дальше все очень просто организововашь цикл -
- и считывашь данные. Можешь использовать их прямо на канву -
Можно загонять туда куда тебе нужно. Естественно, перед этим на канве нужно разместить твое изображение и отслеживать координаты формы.
Кстати, орать в теме не обязательно и даже не нужно. Использование CAPSLOCK не есть признак крутого "кодера" :)
Дело в том что dbExpress не видит libmysql.dll (куда я его только не пихал) да и сам процесс добывания значений из полей таблицы весьма для меня смутен,не могу с ADO разобраться в DBGrid Названия полей появились на значения не могу добыть
не могу с ADO разобраться в DBGrid Названия полей появились на значения не могу добыть
если названия полей есть - значит таблица подключилась нормально, а если значений нет, то два варианта - либо таблица пустая, либо не открыта - надо открыть
Ну например? На этапе разработки использовался столбец "Field", спустя полгода-год ввели новый столбец - старый переименовали, по целому ряду причин. :) Если это рабочая база - можно привести 1001 причина по которой эта операция нужна - и никого не волнуют проблемы программиста.
Если пользовать конструкцию вида
SELECT Field FROM Table ... необходимо перекомпилировать как минимум ту делку в которой это забито. Что такое внести изменения даже в простую программу спустя полгода-год как работа над ней завершена? - иногда это проходит без проблем.
если же это выглядит так
SELECT Field FROM Query ... все переделка сводится к изменеию хранимого запроса, что занимает порядка 5 минут - из них 3 на закрытие-открытие базы.
все теперь понял... :) с утра :) - мне проще все-таки модуль перекомпилить а похожей ситуации - может потому что не пишу пока больших сложных проектов...
все теперь понял... :) с утра :) - мне проще все-таки модуль перекомпилить а похожей ситуации - может потому что не пишу пока больших сложных проектов...
Ну это хорошо если это будет твой модуль...:) И вообще будет замечательно если в него изменеий не вносилось, а если вносилось то документировалось...:)
мне проще все-таки модуль перекомпилить а похожей ситуации - может потому что не пишу пока больших сложных проектов...
Дело порой не столько в сложности проектов, сколько в капризности заказчиков.
Сам посуди - если что-то придется менять прямо на месте, то изменить хранимую процедуру на сервере можно при помощи штатных средств администрирования сервера, а вот для перекомпиляции программы придется ставить у клиента всю среду разработки. Некоторые горе-программисты так и делают...
Решать же подобные проблемы надо еще на уровне проектирования, чтобы потом не пришлось локти кусать.
токо что-то от темы мы немного отвлеклись...
токо что-то от темы мы немного отвлеклись...
Ничего. Для души иногда и пофлудить можно. Задолбали вопросы, набранные заглавными буквами и невероянтным количеством вопросительных и восклицательных знаков.
Дело в том что dbExpress не видит libmysql.dll (куда я его только не пихал) да и сам процесс добывания значений из полей таблицы весьма для меня смутен,не могу с ADO разобраться в DBGrid Названия полей появились на значения не могу добыть
Не совсем понятно, куда ты его пихал, мне приходилось решать задачи работы с Мусклом - работал стандартными компонентами, теме же експрессами - ни каких проблем. Может просто ты мало работал с базами и в связи с этим проблемы возникают? Если это АДО компоненты - приведи код который у тебя не работает - мне кажется проблемы в этом. Если у тебя есть DBGrid - должно быть как минимум еще два компонента -датасоурс и непосредственно компонент работающий с базой - например ADOQuery. Или ADOTable, если так уж хочется.
Ничего. Для души иногда и пофлудить можно. Задолбали вопросы, набранные заглавными буквами и невероянтным количеством вопросительных и восклицательных знаков.
учатся люди... нервничают... а зачем? на просто спокойно почитать маны... и пробовать, пробовать, пробовать... рано или поздно получится как надо!
если названия полей есть - значит таблица подключилась нормально, а если значений нет, то два варианта - либо таблица пустая, либо не открыта - надо открыть
Таблица не пустая. а как открыть? и вообще как и куда SQL каманды писать? и куда я от них ответ получу?
Таблица не пустая. а как открыть? и вообще как и куда SQL каманды писать? и куда я от них ответ получу?
Слушай - есть тема такая - мануалы и хелпы читать... Я понимаю, хелп читают ламеры, "кодерам" -это некогда :) Но стоит все же с этого начинать. Есть Архангельский - для особо продвинутых - там подробнейшим образом разобраны все вопросы для начинающих - куда пИсать, и куда...получать. Если надо - есть на форуме ссылки - где взять.
Открыть очень просто - ADOTable1->Active = true; - и будет тебе счастье.:) Выгружается вся эта прелесть - если работаешь с компонентом типа DBGrid - в компонент типа TDataSource. SQL-команды пишутся в свойство SQL, которое есть у тех компонентов, которые с SQL-запросами работают. Т.е. выглядит это так - для компонента ADOQuery -
AnsiString SQL = "SELECT * FROM Table WHERE PARAM1="+IntToStr(Param1)+"AND PARAM2="+IntToStr(Param2);
ADOQuery->SQL->Add(SQL);
ADOQuery->Active = true;
Но вообще, более эффективно работать через параметры. Помимо того, стороку запроса можно формировать в процессе разработки. Кроме того для АДО есть компонент TADOStoredProcedure - он позволяет работать с хранимыми запросами. Ну а в принципе пренебрегать клавишей F1 не стоит.
Спасибо
Я сразу написал чоб поподробнее или ссылку.В помоще я непонял поэтому и спросил.Я очень признателен за ответы и примеры.
Спасибо
получилось?
получилось?
Да получилость Но я кроме как в DBgrid значение полей вывести не могу.хотелось бы узнать как в чёнить другое вывести
Да получилость Но я кроме как в DBgrid значение полей вывести не могу.хотелось бы узнать как в чёнить другое вывести
Вот пример вывода в ListVeiw. Предполагается что данные ты уже получил. Допустим его свойства - стиль репорт, три столбца, первый - номер по порядку, второй название, третий - количество. Помимо этого, предположим необходимо хранить код, но пользователю его не отображать. Нафиг он ему нужен...:)
int i=1;
while(!ADOQuery1->Eof){
LI = ListView1->Items->Add();
LI->Caption = IntToStr(i++);
LI->SubItems->AddObject(ADOQuery1->FieldByName("NAME")->AsString,(TObject*)new AnsiString(ADOQuery1->FieldByName("CODE")->AsString));
LI->SubItems->Add(ADOQuery1->FieldByName("MASS")->AsString);
ADOQuery1->Next();
}
Обработка двойного клика на ListView -
Edit1->Text = *((AnsiString*)(LI->SubItems->Object[0]));
Edit2->Text = LI->SubItems->Strings[0];
Edit3->Text = LI->SubItems->Strings[1];
С другими точно также.
Вот пример вывода в ListVeiw. Предполагается что данные ты уже получил. Допустим его свойства - стиль репорт, три столбца, первый - номер по порядку, второй название, третий - количество. Помимо этого, предположим необходимо хранить код, но пользователю его не отображать. Нафиг он ему нужен...:)
int i=1;
while(!ADOQuery1->Eof){
LI = ListView1->Items->Add();
LI->Caption = IntToStr(i++);
LI->SubItems->AddObject(ADOQuery1->FieldByName("NAME")->AsString,(TObject*)new AnsiString(ADOQuery1->FieldByName("CODE")->AsString));
LI->SubItems->Add(ADOQuery1->FieldByName("MASS")->AsString);
ADOQuery1->Next();
}
Обработка двойного клика на ListView -
Edit1->Text = *((AnsiString*)(LI->SubItems->Object[0]));
Edit2->Text = LI->SubItems->Strings[0];
Edit3->Text = LI->SubItems->Strings[1];
С другими точно также.
перед while надо бы сделать ADOQuery1->First(); на всякий случай...
перед while надо бы сделать ADOQuery1->First(); на всякий случай...
Ну точнее нужно проверить if(ADOQuery1->Bof).
Ну точнее нужно проверить if(ADOQuery1->Bof).
ну можно и так, хотя на мой взгляд это лишнее