Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 11.04.2009, 11:55
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Я проверял, вполне работоспособный код.
Код:
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  
Старый 15.04.2009, 18:56
elfer elfer вне форума
Новичок
 
Регистрация: 06.02.2009
Сообщения: 63
Репутация: 10
По умолчанию

Подскажи пожалуйста такую информацию. Если в одну и ту же таблицу вносятся одновременно данные с двух клиентских программ ведь может возникнуть ошибка. Как возможно этого избежать? Таблицы на акцессе
Ответить с цитированием
  #18  
Старый 15.04.2009, 19:23
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Почитайте про транзакции и блокировки записей. Но в любом случае обязательно на все таблицы сделайте уникальные индексы по ключевым полям, этот индекс сразу запретит ввод повторяющихся данных на уровне БД.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #19  
Старый 15.04.2009, 19:30
elfer elfer вне форума
Новичок
 
Регистрация: 06.02.2009
Сообщения: 63
Репутация: 10
По умолчанию

А можно ли какой нибудь процедурой проверить вводят ли сейчас данные в таблицу или открыта ли она?
Ответить с цитированием
  #20  
Старый 15.04.2009, 19:44
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Если мне не изменяет память - свойство называется State
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #21  
Старый 15.04.2009, 19:47
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Я таких процедур не знаю, но мне кажеться вряд-ли, т.к. каждый клиент создает свою сессию подключения к БД и эти сессии никак не пересакаются - надо самому реализовывать такой контроль.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #22  
Старый 15.04.2009, 19:48
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Если мне не изменяет память - свойство называется State
Для текущей сессии вы узнаете это состояние, но ему-то надо информация о чужой.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #23  
Старый 15.04.2009, 19:54
elfer elfer вне форума
Новичок
 
Регистрация: 06.02.2009
Сообщения: 63
Репутация: 10
По умолчанию

У меня просто по таймеру с серверной программы 'собираются' данные с клиентских программ и заносятся в общую таблицу. Я просто боюсь что может возникнуть ошибка при записи.
Ответить с цитированием
  #24  
Старый 15.04.2009, 20:21
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Не должно вообще-то. В акцессе нормально многопользовательский режим реализован. Вот я тут забавку на вашу тему нарисовал - пользуйтесь.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 15.04.2009 в 20:26.
Ответить с цитированием
  #25  
Старый 18.04.2009, 17:07
elfer elfer вне форума
Новичок
 
Регистрация: 06.02.2009
Сообщения: 63
Репутация: 10
По умолчанию

За что отвечает эта строка?
if tDemo.State in [dsEdit,dsInsert] then Exit;
Ответить с цитированием
  #26  
Старый 18.04.2009, 17:20
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

За текущее состояние таблицы tDemo. Если текущая запись редактируется или добавили новую запись то выйти из процедуры.
Для таблицы этот режим будет действовать, пока небудет выполнена комманда Post или Cancel, тогда таблица перейдет в режим dsBrowse.
Но это состояние локальное, т.е. на состояние этой-же таблицы в другой сессии никак не отразиться.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 18.04.2009 в 17:22.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter