Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Вниз

Несколько вопросов о работе с БД Access   Найти похожие ветки 

 
Kostafey ©   (2006-01-30 19:54) [40]


> Тяжело повторить код, приведенный в [37] ?

Да нет не тяжело, просто на такой код он выдает:
Не было задано свойство доступное только для чтения

> Data Source=db1.mdb
> а не
> Data Source=База данных MS Access

А это имеет какое-то значение ???
Мне показальсь что собственно путь задается:
ADOConnection1.Properties["Data Source"].Value:=nastr.basepath;

Ну да не важно, как я и говорил, код

function Start_DataBase(FileName:string):boolean;
begin
 BEGIN
   DB_Path:="C:\Program Files\PRG_all\PRG_Code\PRO_Code_Store\Code_Store_v1.01\AccessDB.mdb";
   with DataModule1 do
   begin
     ADOConnection1.Connected:=False;
     ADOConnection1.ConnectionString:=
       "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=AccessDB.mdb;Persist Security Info=False";
     ADOConnection1.Properties["Data Source"].Value:=DB_Path;
     ADOConnection1.Connected:=true;
     ADOTable1.Active:=true;
     ADOTable2.Active:=true;
     ADOTable3.Active:=true;
     ADOQuery_Full.Active:=true;
     ADOQuery1.Active:=true;
     DataSource_Code.Enabled:=true;
     DataSource_Source.Enabled:=true;
     DataSource_Autor.Enabled:=true;
     DataSource1.Enabled:=true;
     DataSource2.Enabled:=true;
     DataSourceQuery.Enabled:=true;
   end;
   GridIni;
   Start_DataBase:=true;
 END;
end;
выдает: Не было задано свойство доступное только для чтения
вот.


 
Kostafey ©   (2006-01-30 20:14) [41]

И еше одна интересная штука.
Начал экспериментировать с пустой программой
Provider=Microsoft.Jet.OLEDB.4.0
Совершенно не хочет работать с запросом самого Access- файла.
Выдает: "Неопознанная ошибка".
К таблицам  подключает - не вопрос.
Приходится дополнительный Query делать.


 
YurikGL ©   (2006-01-30 22:14) [42]


> выдает: Не было задано свойство доступное только для чтения

На какую строчку?


> Совершенно не хочет работать с запросом самого Access- файла.
Код давай....


 
Kostafey ©   (2006-01-31 01:01) [43]


> > выдает: Не было задано свойство доступное только для чтения
>
> На какую строчку?

На включение базы: (притом одинаково будь то run-time, либо Object Inspector)

ADOConnection1.Connected:=true;


> > Совершенно не хочет работать с запросом самого Access-
>  файла.
> Код давай....

Нулевой проект.
UDataModule - DataModule1
Unit1 - Form1
ПРИВОЖУ ВЕСЬ:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids, DBGrids, UDataModule, IniFiles;

type

TNastr=Record
  basepath:string
  end;

 TForm1 = class(TForm)
   DBGrid1: TDBGrid;
   procedure FormShow(Sender: TObject);
   procedure LoadNastr;
 private
   { Private declarations }
 public
   nastr:TNastr;
   { Public declarations }
 end;

var
 Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
 loadnastr;
 with DataModule1 do begin
 ADOConnection1.Connected:=False;
 ADOConnection1.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=False";
 ADOConnection1.Properties["Data Source"].Value:=nastr.basepath;
 ADOConnection1.Connected:=true;
 ADOTable1.Active:=true;
 DataSource1.Enabled:=true;
 end;
end;

procedure TForm1.LoadNastr;
var
IFl:TIniFile;
Begin
IFl:=TIniFile.Create(ExtractFilePath(Application.ExeName)+"mail.ini");
if FileExists(ExtractFilePath(Application.ExeName)+"mail.ini") then
  Form1.Nastr.basepath:=IFl.ReadString("Database options","Path",Form1.Nastr.basepath)
                         else Form1.Nastr.basepath:="db1.mdb";//путь по умолчанию
IFl.Free;
End;

end.

При этом в код UDataModule я вручную ничего не вписывал.
В свойстве ADOTable TableName = "Full" - имя запроса.
Выдает: "Неопознанная ошибка"
Если заменить на имя таблицы TableName = "Code" - все нормально работает

mail.ini содержит:
[Database options]
Path=db1.mdb

db1.mdb - находится в каталоге программы, в файле есть запрос и таблицы.


 
Kostafey ©   (2006-01-31 22:24) [44]

Прошу прощения за назойливость, может то-нибудь ответит на

> Kostafey ©   (31.01.06 01:01) [43]


 
Kostafey ©   (2006-02-01 17:32) [45]

Еще раз 10^3 извинений: возвращаю тему на верх форума


 
sniknik ©   (2006-02-01 20:37) [46]

говорил же не пользуйся ADOTable (в данном случае он конечно не при чем, но разве трудно изначально начинать с "правильных" компонент? ADOTable/ADOQuery "неправильные" не пользуйся ими )

для ADODataSet делай запрос SELECT * FROM [Full]
(Full подозрительно похоже на какоето зарезервированное слово, во всяком случае может быть им, поэтому кавычки)

если делать аналог с ADOTable  (датасет с установленным cmdTable вместо cmdText по умолчанию) то просто указывай [Full] в командной строке (оно так и вставится в формируемый компонентом запрос, и если слово зарезервировано ошибки не будет)


 
Kostafey ©   (2006-02-01 21:03) [47]


> sniknik ©   (01.02.06 20:37) [46]
>
> говорил же не пользуйся ADOTable (в данном случае он конечно
> не при чем, но разве трудно изначально начинать с "правильных"
> компонент? ADOTable/ADOQuery "неправильные" не пользуйся
> ими )

Интересно, а почему же все-таки вы их так не любите ?
Ладно, прогу я сегодня думаю закончить !

ПОДВОЖУ ИТОГИ
Отвечаю на свои вопросы так как я понял по итогам ветки форума:
 1)Есть некая БД, которая корректно работает только на PC с установленной Delphi и Access. Возможность запуска БД на PC без Delphi (но при условии наличия установленной Access) обеспечивает библиотека qtintf70.dll. Однако хотелось бы достичь независимоти программы и от самой Access. (При отсутствии Access выдает сообщение о том что не может найти драйвера по умолчанию).
При Provider=MSDASQL.1 нормально работающую программу на не девелоперском компе написать практически невозможно (по целому ряду причин).
При Provider=Microsoft.Jet.OLEDB.4.0 Невозможно непосредственно поделючится к запросу через ADOTable.
Запрос на подключение qtintf70.dll. при доступе к БД через ADO - результат случайного добавления в подключаемые модули QT.
Вообще Delphi - программа может работать с Access - базой без каких-либо ухищрений, без наличия установленной Access.
 2)Даже при наличии на PC СУБД Acess и библиотеки qtintf70.dll, но отсутствии самой Delphi сетка (DBGrid) не отображет талицы, а только запросы - имеются ввиду не компоненты Table\Query, а таблицы и запросы самого файла БД (на PC с Delphi - все отображается без проблем)
Кстати, редкий случай, как правило, не показывается ничего.
Provider должен быть Microsoft.Jet.OLEDB.4.0
3)Как лучше всего произвести обновление отображения (например в той же сетке) изменений информации. Refresh - ничего не дает. Я же просто закываю и затем заново открываю наборы данных (Active:=false/true) - ясно, что это не рационально.
Можно и так.

Благодарю всех за оказанную помошь !
СПЕШИАЛ СЭНЬКС ФО
YurikGL
sniknik


 
Almaz ©   (2006-02-02 02:25) [48]


> 3)Как лучше всего произвести обновление отображения (например
> в той же сетке) изменений информации. Refresh - ничего не
> дает. Я же просто закываю и затем заново открываю наборы
> данных (Active:=false/true) - ясно, что это не рационально.
>
> Можно и так.

Для TADODataSet , ИМХО, лучше использовать метод Requery (не путать с Refresh ;))

Удачи.


 
msguns ©   (2006-02-02 09:23) [49]

Сколько просыпано бисера впустую ;((
Просьба не обижаться ;)



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.046 c
15-1138381707
Ермак
2006-01-27 20:08
2006.02.19
Хельсинская группа получала деньги от британских шпионов


1-1137918107
Compton's G
2006-01-22 11:21
2006.02.19
Мерцание TImage


1-1137507030
belenkov
2006-01-17 17:10
2006.02.19
Циклический опрос COM порта


2-1138713258
Sharapa
2006-01-31 16:14
2006.02.19
Помогите, не знаю команд окон


2-1138638192
Arazel
2006-01-30 19:23
2006.02.19
Почему команда Insert не работает в DELPHI (ADOQuery)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский