Текущий архив: 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.52 MB
Время: 0.034 c