Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

Блокировки Ado и Access   Найти похожие ветки 

 
Manfred8   (2004-05-06 12:17) [0]

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

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


 
Manfred8   (2004-05-06 12:49) [1]

Людиииии.....
Помогите....
Ау....


 
Мунька   (2004-05-06 12:53) [2]

А Вы приведите здесь строку подключения.. так. на всякий случай


 
Соловьев ©   (2004-05-06 12:55) [3]


> в момент после  AdoDataset.edit  возникает симпатичное сообщение:
> Невозможно обновить поле.

интересно посмотреть и запрос


 
Manfred8   (2004-05-06 13:04) [4]

Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Program Files\Borland\Delphi7\Projects\макет блокировки\db1.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don"t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

А запроса даже нет , просто делаю AdoDataset1.edit и происходит привет. А дальше в принципе из edita присваивается значение
полю табличьки и  AdoDataset1.post;


 
Соловьев ©   (2004-05-06 13:05) [5]


> А запроса даже нет

CommandText?


 
Manfred8   (2004-05-06 13:06) [6]

select * from Head


 
sniknik ©   (2004-05-06 13:09) [7]

еше вопрос, ключевое поле есть?

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


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

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


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

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


 
sniknik ©   (2004-05-06 13:24) [10]

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

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


 
sniknik ©   (2004-05-06 13:26) [11]

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


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

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

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

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


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

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


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

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


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


> Manfred8

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


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

Пожалуй да


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

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


 
Erik ©   (2004-05-06 14:30) [18]

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


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

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

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


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


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

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


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

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


 
Erik ©   (2004-05-06 15:08) [22]

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

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


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

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

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

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


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


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

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


 
Erik ©   (2004-05-07 10:29) [25]

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


 
ItMan   (2004-05-07 19:05) [26]

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

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


 
sniknik ©   (2004-05-08 12:44) [27]

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



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

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.118 c
14-1083917961
malkolinge
2004-05-07 12:19
2004.05.30
Интересно есть на форуме хоть один человек, кто ни разу


6-1081350040
csr
2004-04-07 19:00
2004.05.30
TidIOHandlerSocket - вопрос


14-1084354622
Романов Р.В.
2004-05-12 13:37
2004.05.30
Опрос - экстренное программирование


6-1081631172
StarEvil
2004-04-11 01:06
2004.05.30
ipconfig.exe на Delphi


14-1084456596
Developerr
2004-05-13 17:56
2004.05.30
Как получить только имя файла в OpenDialog?