|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.04.2013, 12:05 | #1 |
Регистрация: 09.04.2013
Сообщений: 4
|
как мне переподключиться к БД Access???
здравствуйте все кто это смотрит!!! недавно начал изучать С++ Builder 6, написал небольшую программу смотрел по примеру из книги. и вот в этом коде подключение к БД идёт через командную строку к простому txt файлу, а я пытаюсь её переподключить к БД Access. как подключится в принципе понял(через:ADOConnection и ADOTable), но как переподключить этот код не понимаю. вот подскажите какую строку и на какую мне в коде заменить чтоб подключится к БД Access, чтоб он мне все вопросы в Label считывал из Access. прогу отладил всё работает(в данном случае),поиск файла БД и подключение идёт в функцииvoid __fastcall TForm1::FormActivate(TObject *Sender)) код прокомментирую чтоб лучше понять можно было. вот код:
int f;// дескриптор файла теста // имя файла теста берем из командной строки int level[4]; // кол-во правильных ответов, необходимое для достижения уровня AnsiString mes[4];// сообщение о достижении уровня TVopros Vopros;// вопрос int otv;// номер выбранного ответа int right = 0;// кол-во правильных ответов // функции, обеспечивающие чтение вопроса из файла теста int GetInt(int f);// читает целое int GetString(int f, AnsiString *st);// читает строку //---------------------------------------------- void __fastcall TForm1::FormActivate(TObject *Sender) { AnsiString st; // имя файла теста должно быть указано в командной строке int n = ParamCount(); if ( n < 1 ) { Label1->Font->Style = TFontStyles()<< fsBold; Label1->Caption = "В командной строке запуска программы надо задать имя файла теста"; Button1->Tag = 2; return; } // открыть файл теста f = FileOpen(ParamStr(1), fmOpenRead); if ( f == -1 ) { Label1->Font->Style = TFontStyles()<< fsBold; Label1->Caption ="Ошибка доступа к файлу теста " + ParamStr(1); Button1->Tag = 2; return; } // вывести информацию о тесте GetString(f, &st); // прочитать название теста Form1->Caption = st; GetString(f, &st); // прочитать вводную информацию Label1->Width = Form1->ClientWidth - Label1->Left -20; Label1->Caption = st; Label1->AutoSize = true; // прочитать информацию об уровнях оценки for (int i=0; i<4; i++) { level[i] = GetInt(f); GetString(f, &mes[i]); } } // читает из файла очередной вопрос bool GetVopros(TVopros *v) { AnsiString st; int p; // если p=1, то к вопросу есть иллюстрация if (GetString(f , &(v->Vopr)) != 0 ) { // прочитать кол-во вариантов ответа, номер правильного ответа // и признак наличия иллюстрации v->nOtv = GetInt(f); v->rOtv = GetInt(f); p = GetInt(f); if (p) // к вопросу есть иллюстрация GetString(f,&(v->Img) ); else v->Img = ""; // читаем варианты ответа for (int i = 0; i < v->nOtv; i++) { GetString(f,&(v->Otv[i])); } return true; } else return false; } //----------------------------------------------- // выводит вопрос void __fastcall TForm1::ShowVopros(TVopros v) { int top; int i; // вопрос Label1->Width = ClientWidth - Label1->Left -20; Label1->Caption = v.Vopr; Label1->AutoSize = true; if (v.Img != "") // к вопросу есть иллюстрация { /* определим высоту области, которую можно использовать для вывода иллюстрации */ int RegHeight = Button1->Top - (Label1->Top + Label1->Height +10) // область вывода вопроса - (RadioButton[1]->Height + 10) * v.nOtv; Image1->Top = Label1->Top + Label1->Height + 10; // загрузим картинку и определим ее размер Image1->Visible = false; Image1->AutoSize = true; Image1->Picture->LoadFromFile(v.Img); if (Image1->Height > RegHeight) // картинка не помещается else // положение полей отсчитываем от вопроса top = Label1->Top + Label1->Height + 10; // варианты ответа for (i = 0; i < v.nOtv; i++) { RadioButton[i]->Top = top; RadioButton[i]->Caption = v.Otv[i]; RadioButton[i]->Visible = true; RadioButton[i]->Checked = false; top += 20; } } |
19.04.2013, 15:21 | #2 | |
Форумчанин
Регистрация: 29.01.2013
Сообщений: 319
|
Для начала надо создать БД в Access. Для этого надо решить сколько будет таблиц, какие поля, какая информация в них будет находится и т.д. Это самое сложное. Всё остальное труда не составляет. Подключаешься к ней через ADOConnection, совершенно верно. Для этого в ConnectionString надо указать имя файла.
Цитата:
С помощью ADOTable можно открыть нужную таблицу. Читаешь текущую запись, переходишь к следующей. Например, чтение вопроса могло бы выглядеть так: Код:
Последний раз редактировалось FataLL; 19.04.2013 в 15:23. |
|
19.04.2013, 15:30 | #3 | |
Регистрация: 09.04.2013
Сообщений: 4
|
Спасибо тебе большое!!!! я думал уже никогда никто неответит где ток неспрашивал(((
Цитата:
.... .... ....теперь по аналогии с этой строкой и по другим таким же строкам v->nOtv = ADOTable1->FieldByName("nOtv")->AsInteger; всё переделать смогу я просто не знал как в билдере сделать вот такое сравнение переменной с данными в БД..... Ещё раз огромное спасибо!!!! |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как открыть из БД Access другую Бд Access? | Ribun | Microsoft Office Access | 8 | 10.03.2012 05:44 |
А вдруг ко мне придет халява БД ГАИ(access)... | WhoI 14 | Microsoft Office Access | 1 | 01.05.2010 01:29 |
Напишите мне БД в Access | Ek@teriN@ | Помощь студентам | 0 | 15.11.2009 18:09 |
Ребята!!!Помогите!!!Мне..мне край!!! | Генерал_Касетр | Помощь студентам | 0 | 15.06.2009 16:48 |
подходит ли мне MS Access? | mitek | Microsoft Office Access | 3 | 05.03.2008 13:08 |