![]() |
|
|
#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. |