|
#16
|
||||
|
||||
Я проверял, вполне работоспособный код.
Код:
unit Unit13; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm13 = class(TForm) Label1: TLabel; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form13: TForm13; implementation {$R *.dfm} uses WinSock; function GetLocalIP: String; const WSVer = $101; var wsaData: TWSAData; P: PHostEnt; Buf: array [0..127] of Char; begin Result := ''; if WSAStartup(WSVer, wsaData) = 0 then begin if GetHostName(@Buf, 128) = 0 then begin P := GetHostByName(@Buf); if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^); end; WSACleanup; end; end; procedure TForm13.FormCreate(Sender: TObject); begin Label1.Caption := GetLocalIP end; end. Код:
object Form13: TForm13 Left = 0 Top = 0 Caption = 'Form13' ClientHeight = 302 ClientWidth = 635 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 16 Top = 24 Width = 31 Height = 13 Caption = 'Label1' end end Это тоже неработает? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#17
|
|||
|
|||
Подскажи пожалуйста такую информацию. Если в одну и ту же таблицу вносятся одновременно данные с двух клиентских программ ведь может возникнуть ошибка. Как возможно этого избежать? Таблицы на акцессе
|
#18
|
||||
|
||||
Почитайте про транзакции и блокировки записей. Но в любом случае обязательно на все таблицы сделайте уникальные индексы по ключевым полям, этот индекс сразу запретит ввод повторяющихся данных на уровне БД.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#19
|
|||
|
|||
А можно ли какой нибудь процедурой проверить вводят ли сейчас данные в таблицу или открыта ли она?
|
#20
|
||||
|
||||
Если мне не изменяет память - свойство называется State
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#21
|
||||
|
||||
Я таких процедур не знаю, но мне кажеться вряд-ли, т.к. каждый клиент создает свою сессию подключения к БД и эти сессии никак не пересакаются - надо самому реализовывать такой контроль.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#22
|
||||
|
||||
Цитата:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#23
|
|||
|
|||
У меня просто по таймеру с серверной программы 'собираются' данные с клиентских программ и заносятся в общую таблицу. Я просто боюсь что может возникнуть ошибка при записи.
|
#24
|
||||
|
||||
Не должно вообще-то. В акцессе нормально многопользовательский режим реализован. Вот я тут забавку на вашу тему нарисовал - пользуйтесь.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 15.04.2009 в 20:26. |
#25
|
|||
|
|||
За что отвечает эта строка?
if tDemo.State in [dsEdit,dsInsert] then Exit; |
#26
|
||||
|
||||
За текущее состояние таблицы tDemo. Если текущая запись редактируется или добавили новую запись то выйти из процедуры.
Для таблицы этот режим будет действовать, пока небудет выполнена комманда Post или Cancel, тогда таблица перейдет в режим dsBrowse. Но это состояние локальное, т.е. на состояние этой-же таблицы в другой сессии никак не отразиться. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 18.04.2009 в 17:22. |