Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение и проверка БД 
:(
    Опции темы
s1lver
Дата 18.6.2008, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Вообщем проблема возникла при подключении и проверки наличия файла БД.
Подключаю БД MS Access

Код

void __fastcall TForm3::FormCreate(TObject *Sender)
{
char Connect='Provider=Microsoft.Jet.OLEDB.4.0;' +
               'Data Source=function.mdb';

if (FileExists('function.mdb')){
     ADOConnection1->Connected=false;
     ADOConnection1->ConnectionString=Connect;
     ADOConnection1->Connected=true;

ADOTable1->Active=True;
ADOTable2->Active=True;
ADOTable3->Active=True;
                               }   }
}



--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Dmi3ev
Дата 18.6.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

char Connect='Provider=Microsoft.Jet.OLEDB.4.0;' +
               'Data Source=function.mdb';

как Вы в char смогли все это запихнуть, char-1 байт. smile  Для начала используйте AnsiString Connect. Напишите о результатах, остальные строчки даже и смотреть нечего

Добавлено через 7 минут и 39 секунд
когда вы используете строку, то используйте двойные ковычки
Цитата

char Connect='Provider=Microsoft.Jet.OLEDB.4.0;' +
               'Data Source=function.mdb';

а надо (я не говрю о правильности указания провайдера и т.д., а только о том как записывать строки )
Код

AnsiString Connect="Provider=Microsoft.Jet.OLEDB.4.0;" +
               "Data Source=function.mdb";

не так
Цитата

FileExists('function.mdb')

а так
Код

FileExists("function.mdb")


Добавлено через 10 минут и 44 секунды
если у вас переменная char, то тогда используйте одинарные ковычки
Код

char c='a';

если массив char, тогда двойные
char c[]="string";
а соединение может быть и правильное smile 


--------------------

PM MAIL   Вверх
s1lver
Дата 19.6.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Да, спасибо на счет кавычек я разобрался потом. 
Вот переделал так как вы говорите:
Код


void __fastcall TForm3::FormCreate(TObject *Sender)
{
AnsiString Connect="Provider=Microsoft.Jet.OLEDB.4.0;" + указывает на ошибку тут
               "Data Source=function.mdb";
               /*ADOConnection1->ConnectionString="Data Source=Data/function.mdb";
               ADOConnection1->Connected=true; */
{
if (FileExists("function.mdb")){
     ADOConnection1->Connected=false;
     ADOConnection1->ConnectionString=Connect;
     ADOConnection1->Connected=true;   

ADOTable1->Active=True;
ADOTable2->Active=True;
ADOTable3->Active=True;
   }}
}


Выходит такая ошибка [C++ Error] function.cpp(39): E2085 Invalid pointer addition
хотя я эту строку скопировал из ADOConnection1 


далее я попытался подключить по другому.
Код

ADOConnection1->ConnectionString="Data Source=Data/function.mdb";
               ADOConnection1->Connected=true; 

ADOTable1->Active=True;
ADOTable2->Active=True;
ADOTable3->Active=True;


компилируется, но при запуске выходит сообщение "Не выполнена проверка подлинности ".
Хотя таблица с данными отображается!!! smile 


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Dmi3ev
Дата 19.6.2008, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



я подключал не прогаммно только что, вот какой у меня ConnectionString
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Программирование\претензии\претензии\pretenzii1.mdb;Mode=ReadWrite;Persist Security Info=False
а у Вас раз так
Цитата

ADOConnection1->ConnectionString="Data Source=Data/function.mdb";

и раз так
Цитата

AnsiString Connect="Provider=Microsoft.Jet.OLEDB.4.0;" + указывает на ошибку тут
               "Data Source=function.mdb";

в последнем примере + не ставьте, какого ... он там делает, если он не производит никаких изменений, пишите так:
Код

AnsiString Connect="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=function.mdb"


Добавлено через 32 секунды
а вот программно соединял
Код

ADOConnection1->LoginPrompt=false;
ADOConnection1->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Ïðîãðàììèðîâàíèå\\ïðåòåíçèè\\ïðåòåíçèè\\pretenzii1.mdb;Mode=ReadWrite;Persist Security Info=False";
ADOConnection1->Open();
ADOTable1->Active=true;


Добавлено через 55 секунд
ой, каркули, это путь к бд

Добавлено через 2 минуты и 5 секунд
Open() и Connected=true, это одно и то же


--------------------

PM MAIL   Вверх
s1lver
Дата 19.6.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Ага, ошибка из-за + была.
Но теперь другая проблема даные не отображаются.
Т.е похоже подключение не произошло


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Dmi3ev
Дата 19.6.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



присылайте текст, он же каждый раз меняется у Вас, но сначала возьмите мой вариант и поменяйте только путь к бд. если не получится, тогда будем думать  smile

Добавлено через 3 минуты и 9 секунд
а в Table DBGRID DATASOURCE, Вы все правильно указали? Просто я не пойму, подключение программно, c Table и тд Вы работаете вручную. изберательно у Вас как-то  smile 


--------------------

PM MAIL   Вверх
s1lver
Дата 19.6.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



вот как сейчас выглядит:
Код


void __fastcall TForm3::FormCreate(TObject *Sender)
{
               
AnsiString Connect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=function.mdb";

if (FileExists("function.mdb")){
     ADOConnection1->Connected=false;
     ADOConnection1->ConnectionString=Connect;
     ADOConnection1->Connected=true;   
      }
ADOTable1->Active=True;
ADOTable2->Active=True;
ADOTable3->Active=True;
  }
 


Да, и теперь выводит сообщение что не выполнена проверка подлинности

Это сообщение отредактировал(а) s1lver - 19.6.2008, 11:54


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Dmi3ev
Дата 19.6.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



а как у меня попробывали?


--------------------

PM MAIL   Вверх
s1lver
Дата 19.6.2008, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Да пробовал.
Вообщем заработало. Но при открытии выходит сообщение "Не выполнена проверка подлинности"

PS. может из-за того что я настроил поля отображения не программно?

Это сообщение отредактировал(а) s1lver - 19.6.2008, 12:00


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Dmi3ev
Дата 19.6.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



попробуйте руками соединить пока что, пишите что получилось. умеете ручками соединять, непрограммно



--------------------

PM MAIL   Вверх
s1lver
Дата 19.6.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Если руками то, при попытке выбрать таблицу выходит сообщение "Не выполнена проверка подлинности"

Вот на всякий случай весь код на форме:

Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <stdio.h>

#include "function.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "sSpeedButton"
#pragma resource "*.dfm"
TForm3 *Form3;

//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm3::TabSet1Change(TObject *Sender, int NewTab,
      bool &AllowChange)
{
switch (TabSet1->TabIndex)
{
case 1: DBGrid2->Visible=true;
{DBGrid1->Visible=false;
 DBGrid3->Visible=false;
 DBNavigator1->DataSource=DataSource2;}
         break;
case 0: DBGrid1->Visible=true;
{DBGrid2->Visible=false;
DBGrid3->Visible=false;
DBNavigator1->DataSource=DataSource1;}
         break;
case 2: DBGrid3->Visible=true;
{DBGrid2->Visible=false;
DBGrid1->Visible=false;
DBNavigator1->DataSource=DataSource3;}
break;  }
}
//---------------------------------------------------------------------------


void __fastcall TForm3::FormCreate(TObject *Sender)
{
         
AnsiString Connect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=function.mdb";

if (FileExists("function.mdb")){
     ADOConnection1->Connected=false;
     ADOConnection1->ConnectionString=Connect;
     ADOConnection1->Connected=true;   
      }
ADOTable1->Active=True;
ADOTable2->Active=True;
ADOTable3->Active=True;

}
//---------------------------------------------------------------------------


Собственно меня сейчас вот это сообщение заботит "Не выполнена проверка подлинности" - из-за чего оно может выводится?

Это сообщение отредактировал(а) s1lver - 19.6.2008, 12:16


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Dmi3ev
Дата 19.6.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



я вообще такого не встречал, если я не задаю путь к бд, у меня появляется такое сообщение, но у Вас все указано, попробуйте вот такое еще добавить, как у меня
Код

Persist Security Info=False

просто проверка подлинности скорее всего связана с паролями и тд, если рассуждать логически
еще этот пароль можно убрать, зачем он нужен
Код

ADOConnection1->LoginPrompt=false;

я не сталкивался с такой ошибкой, хотя по ADO делал много чего, хз, попробуйте пока вот такие варианты

Добавлено через 55 секунд
это в ConnectionString
Persist Security Info=False


--------------------

PM MAIL   Вверх
Dmi3ev
Дата 19.6.2008, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



о кстати, если ты подключаешь программно, то св-во TableName У ADOTable тоже лучше программно задавать, ведь до начала соединения (пока событие не произошло) Table не знает где находится таблица.  попробуй программно задать имя таблицы, это может помочь


--------------------

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.