Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Блокировки Ado и Access [D7, Access]


Страницы:   1 2

Manfred8 ©   (2004-05-06 12:17:00) 

Добрый день.
Работаю с базой на Access  посредством Ado.
Поскольку прога разрабатывается для работы в локальной сети, доступ будет многопользовательский.Значит надо делать блокировки.
У AdoTable для этого, насколько я знаю, используются свойства:
-CursorLocation
-CursorType
-LockType
Устанавливаю:
CursorLocation:=clUseServer
CursorType:=ctKeyset
LockType:=ltPessimistic (нужна именно писсиместическая)

Запускаю.1 экземпляр. При попытке редактирования, в момент после  AdoDataset.edit  возникает симпатичное сообщение: Невозможно обновить поле.
Кто-нибудь знает почему? И самое главное как это преодолеть.Помогите. Бьюсь уже больше недели, не понимаю почему не работает


sniknik   (2004-05-08 12:44:00) [1]

поддерживается, но они в нем не совсем то что в MSSQL


ItMan   (2004-05-07 19:05:00) [2]

У AdoTable для этого, насколько я знаю, используются свойства:
-CursorLocation
-CursorType
-LockType
Устанавливаю:
CursorLocation:=clUseServer
CursorType:=ctKeyset
LockType:=ltPessimistic (нужна именно писсиместическая)

Access вроде не поддерживает серверных курсоров.


Erik   (2004-05-07 10:29:00) [3]

To Manfred8
А куда я пошлю на деревню дедушке? Ты же свой email неуказывеш в посте.
автоинкрементное убей!!!! И пользуйся генератором, но с ним обязателен AppServer.


Курдль   (2004-05-06 16:30:00) [4]


> Возможно кому-нибудь еще пригодится, грабли:

Возможно нам всем пригодится, если Вы обоснуете, почему же все-таки выбор пал именно на Access?


Manfred8   (2004-05-06 15:54:00) [5]

Все дело в волшебных пузырьках или за что я люблю Access.
Возможно кому-нибудь еще пригодится, грабли:

Если при создании таблицы 1 ее поле - автоинкрементное и первичный ключ, то происходит бяка.
Лечится: сделать его вторым или 3 - помогает. Или изменить его тип - тоже помогает.

Очень смешно и очень странно..


Erik   (2004-05-06 15:08:00) [6]

Manfred8
Это вобще свойство MsAccess, поэтому про Repear и спрашивал. Дальше нарвешся на другие сюрпризы :)

Курдль
А как он навсегда забудет, ломом по голове чтоли?! :)
Мы пойдем другим путем.
Лично у меня такая штука на всю Эстонию работает, правда там в качестве клиента IExpolorer, но идея таже.


Manfred8   (2004-05-06 14:47:00) [7]

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


Курдль   (2004-05-06 14:35:00) [8]


> Если что то слышал про трех звенки, то сообразиш, что к
> чему.
>  Могу для AppServer на MsAccess дать код генератора. Из
> за этого основные проблемы возникали.

Если что слышал про трехзвенки для таких целей - забудь навсегда!
Проблемы - от неправильного выбора БД. Даже IB был бы уместнее!


Manfred8   (2004-05-06 14:34:00) [9]

>Могу для AppServer на MsAccess дать код генератора. Из за >этого основные проблемы возникали.

Давайте, с удовольствием возьму.


Erik   (2004-05-06 14:30:00) [10]

А на кой тебе песемистическая блокировка?! И какую версию MsAccess используеш? Вобщето надо ставить оптимистическую и по ничего неблокировать. К томуже ADO здесь нафиг ненужен. Бери Diamond Assess или сам MsJet напрямую используй. К томуже ты базе Repear и Compact делал?
 А если делаеш на MsAccess то должен знать, что это File-Server получится, а значить при обычном подходе тормоза будут и база переодически рушится! По умному это использовать надо. Если что то слышал про трех звенки, то сообразиш, что к чему.
 Могу для AppServer на MsAccess дать код генератора. Из за этого основные проблемы возникали.


Курдль   (2004-05-06 14:23:00) [11]

Но это же нонсенс!


Manfred8   (2004-05-06 14:08:00) [12]

Пожалуй да


Курдль   (2004-05-06 14:06:00) [13]


> Manfred8

А Вам уже поздно отказываться от идеи создания многопользовательской системы на Access-e?


Manfred8   (2004-05-06 14:04:00) [14]

Даже не знаю чего думать. Накидал тех компанентов которые упомянуты в листинге. просмотрел форму как текст. Тупо вставил листинг.
Создал базу с табличкой table2 и полем client_id , откопмпил запустил, нажал кнопку  - получил ..  Невозможно обновить поле


Manfred8   (2004-05-06 13:44:00) [15]

Мистика какая-то, не работает, если не трудно вышли мне на почту проект с базой petersforwork@rambler.ru


Manfred8   (2004-05-06 13:30:00) [16]

У меня Win Xp Professional Access Xp(2002) то есть jet - последний 4.0

day- не мешает пробовал другие таблицы- по фигу.

В коннектион ничего кроме LoginPrompt:=false и указанного выше не менял, все базовое :((


sniknik   (2004-05-06 13:26:00) [17]

unit PessimisticUnit;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids;

type
 TForm1 = class(TForm)
   ADODataSet1: TADODataSet;
   ADOConnection1: TADOConnection;
   DBGrid1: TDBGrid;
   DataSource1: TDataSource;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 ADODataSet1.Edit;
 ADODataSet1.FieldByName('client_id').AsInteger:= Random(1000);
 ADODataSet1.Post;
end;

end.

object Form1: TForm1
 Left = 296
 Top = 107
 Width = 783
 Height = 540
 Caption = 'Form1'
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = 'MS Sans Serif'
 Font.Style = []
 OldCreateOrder = False
 PixelsPerInch = 96
 TextHeight = 13
 object DBGrid1: TDBGrid
   Left = 16
   Top = 176
   Width = 737
   Height = 321
   DataSource = DataSource1
   TabOrder = 0
   TitleFont.Charset = DEFAULT_CHARSET
   TitleFont.Color = clWindowText
   TitleFont.Height = -11
   TitleFont.Name = 'MS Sans Serif'
   TitleFont.Style = []
 end
 object Button1: TButton
   Left = 280
   Top = 112
   Width = 75
   Height = 25
   Caption = 'Button1'
   TabOrder = 1
   OnClick = Button1Click
 end
 object ADODataSet1: TADODataSet
   Active = True
   Connection = ADOConnection1
   CursorLocation = clUseServer
   LockType = ltPessimistic
   CommandText = 'Table2'
   CommandType = cmdTableDirect
   Parameters = <>
   Left = 96
   Top = 16
 end
 object ADOConnection1: TADOConnection
   Connected = True
   ConnectionString =
     'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:\DB' +
     '\ABC.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:S' +
     'ystem database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database ' +
     'Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking M' +
     'ode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk ' +
     'Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Crea' +
     'te System Database=False;Jet OLEDB:Encrypt Database=False;Jet OL' +
     'EDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without' +
     ' Replica Repair=False;Jet OLEDB:SFP=False'
   CursorLocation = clUseServer
   LoginPrompt = False
   Mode = cmShareDenyNone
   Provider = 'Microsoft.Jet.OLEDB.4.0'
   Left = 56
   Top = 16
 end
 object DataSource1: TDataSource
   DataSet = ADODataSet1
   Left = 136
   Top = 16
 end
end


sniknik   (2004-05-06 13:24:00) [18]

day попробуй поменять (уж очень на зарезервированое похоже), но вообще странно, ничего похожего не возникает, проверил с тем что написал, больше ничего не менял? в ADOConection к примеру.

счас еще со структурой этой посмотрю. еще можеш последние версии jet установить, на случай если у тебя ранние и глючат.


Manfred8   (2004-05-06 13:18:00) [19]

Не знаю, может у меня руки кривые или еще чего, если у кого-то работают писсимистические блокировки ado+access
ПЛИЗ дайте исходнки


Manfred8   (2004-05-06 13:15:00) [20]

Да автоинкрементное
структура таблички Head:IdMarshruta - счетчик(ключевое)
Marshrut - текстовое (50)
day- текстовое (2)
NameIn- текстовое (50) индексированное совпадения допускаются
NameOut- текстовое(50) индексированное совпадения допускаются


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо