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

Вниз

Блокировки 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.032 c
14-1084047444
Thor
2004-05-09 00:17
2004.05.30
помогите вспомнить стихотворение!


1-1084541238
Beglec
2004-05-14 17:27
2004.05.30
Не могу понять предупреждение компилятора


1-1085043800
finger
2004-05-20 13:03
2004.05.30
Динамическая работа с компнентами


14-1084129697
James Stuart
2004-05-09 23:08
2004.05.30
Вопрос по Виндам 98


4-1082532597
LAndrey
2004-04-21 11:29
2004.05.30
Работа с MSExcel в отдельном потоке





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский