Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2011, 14:53   #1
Aleksandr
Форумчанин
 
Регистрация: 22.05.2007
Сообщений: 511
По умолчанию Не сохраняются значения в таблицу.

Не сохраняется текущее время в Время_ост или в Время_пуск. Это код пингации IP адресов из базы. Если связь с данным адресом есть, то записывает текущее время в Время_пуск, если связи нет - то записывает время в Время_ост. Для активной строки таблицы получилось. А мне нужно выбрать все значения с num=true. Я выбираю эти значения с помощью запроса
Код:
MainForm.ADOQuery3.Active:=false;
  MainForm.ADOQuery3.SQL.Clear;
   MainForm.ADOQuery3.SQL.Text := 'select * from refbook' +
   ' where num=true' +' and Id='+MainForm.DbText1.Caption;
  MainForm.ADOQuery3.Open;
 MainForm.ADOQuery3.Active:=true;
  MainForm.ADOQuery3.Refresh;
Это полный код пингации
Код:
if (MainForm.DBGrid2.DataSource.DataSet.FieldByName('IP').Text = '') then begin

showmessage('Digite um HostName ou um End. IP');
exit;
end;

HNDicmp := LoadLibrary('ICMP.DLL');

MainForm.ADOTable1.Refresh;
   MainForm.ADOQuery3.Active:=false;
  MainForm.ADOQuery3.SQL.Clear;
   MainForm.ADOQuery3.SQL.Text := 'select * from refbook' +
   ' where num=true' +' and Id='+MainForm.DbText1.Caption;
  MainForm.ADOQuery3.Open;
 MainForm.ADOQuery3.Active:=true;
  MainForm.ADOQuery3.Refresh;
  MainForm.ADOTable1.Edit;


with MainForm.ADOQuery3 do
 while not eof do begin

if (HNDicmp <> 0) then begin 
@IcmpCreateFile := GetProcAddress(HNDicmp,'IcmpCreateFile'); 
@IcmpCloseHandle := GetProcAddress(HNDicmp,'IcmpCloseHandle');
@IcmpSendEcho := GetProcAddress(HNDicmp,'IcmpSendEcho');
if (@IcmpCreateFile=nil) or (@IcmpCloseHandle=nil) or
   (@IcmpSendEcho=nil) then begin
showmessage('Erro pegando endereзos ICMP');
FreeLibrary(HNDicmp);
end;
end; 
Retorno := WSAStartup($0101,wsadt);

if (Retorno <> 0) then begin 
showmessage('N-гo foi possнvel carregar WinSockets');

WSACleanup();
FreeLibrary(HNDicmp); 
end;

Destino.S_addr := inet_addr(Pchar(  MainForm.ADOQuery3.DataSource.DataSet.FieldByName('IP').Text));
if (Destino.S_addr = 0) then begin 
Host := GetHostbyName(PChar(  MainForm.ADOQuery3.DataSource.DataSet.FieldByName('IP').Text));
end 
else begin
Host := GetHostbyAddr(@Destino,sizeof(in_addr), AF_INET); 
end; 

if (host = nil) then begin


MainForm.ADOTable1.FieldByName('Время_ост').AsString := TimeToStr(now);

WSACleanup();
FreeLibrary(HNDicmp); 
exit;
end;


Endereco := @Host.h_addr_list;

HNDFile := IcmpCreateFile();
for x:= 0 to 4 do begin
Ip.Ttl := char(255); 
Ip.Tos := char(0); 
Ip.IPFlags := char(0);
Ip.OptSize := char(0); 
Ip.Options := nil; 

//dwRetorno := IcmpSendEcho(HNDFile,Endereco^,null,0,Ip,Icmp,sizeof(Icmp),DWORD(5000));
Destino.S_addr := icmp.source;

MainForm.ADOTable1.FieldByName('Время_пуск').AsString := TimeToStr(now);

 MainForm.ADOTable1.Post;

 MainForm.ADOQuery3.Active:=false;
 MainForm.ADOQuery3.Refresh;


end;
Next;
 end;
  if terminated then

   exit;
 end;
Aleksandr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как записать в таблицу значения вычисляемого в форме Юрий Л Microsoft Office Access 0 25.11.2010 01:02
Не сохраняются записи в БД Siluet БД в Delphi 14 01.11.2010 21:54
Запись в таблицу значения вычисляемого в форме covair Microsoft Office Access 5 26.09.2010 15:19
Как добавить значения из списка с множественным выбором в таблицу/запрос? NickiBell Microsoft Office Access 0 24.09.2010 00:38
Вставка значения в таблицу с автоинкриментным полем artemavd БД в Delphi 5 16.05.2009 12:14