|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как лучше организовать БД компов в локальной сети
Привет всем! Вот все никак недотумкаю, как лучше мне организовать такое дело: я пишу прогу клиент-сервер, клиент стоит на всех компах в сети и запускается при старте винды, а сервер у "начальника отдела ИТ". Это моя прога на диплом и предназначена она для автоматизации инвентаризации компов в сети предприятия.
При старте программы-сервера сеть сканируется на включенные компы и список компов в виде TreeView заполняется. При нажатии правой кнопкой мыши по компу в TreeView и выборе из выпадающего меню "Получить конф-ю компа", сервер получает от клиента текст с описанием железа компа, которое кладется пока просто в МЕМО. Как бы лучше организовать хранение этой инфы в БД, как заносить компы в БД??? Использовать планирую БД Access *.mdb + ADO. Подскажите пожалуйста, как лучше это реализовать! Последний раз редактировалось alexnov, 16.04.2009 в 12:00. |
#2
|
||||
|
||||
Цитата:
Ну, создай таблицу в базе, поля с соответствующими к конфигурации компов названиями (типа CPU, RAM, OS и прочее), еще пару полей-идентификаторов для определения компа в сети (IP, Network_name, Net_User и др.). Ну и все, получаешь список компов, перебираешь его и смотришь есть такой уже в базе или нет. Если нет- получаешь конфигурацию, и раскидываешь ее по таблице. |
#3
|
||||
|
||||
Вообщето ответ зависит от того, что планируется делать с этими данными. Если они нужны в виде текстового представления, то "нафига козе боян". А вот если вы хотите делать какие-то выборки по составляющим этот список элементам - тогда конечно придется раскладывать по компонентам в таблицы.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
|||
|
|||
конечно, выборки предполагаются. Как я себе представляю, когда при запуске программы происходит сканирование сети на наличие включенных компов нужно их сразу добавлять в таблицу (с проверкой на наличие его уже там), а потом при опросе отдельного компа нужно искать его в этой таблице и заполнять необходимое поле. так вроде?
|
#5
|
|||
|
|||
Ребята как написать процедуру эту добавления компа в таблицу ADOTable_Comps не пойму???
Код:
procedure Add_pc_to_db(comp_name:string); var i:integer; begin for i:=0 to DataModule1.ADOTable_Comps.RecordCount do if DataModule1.ADOTable_Comps.FieldValues['compname'].asstring<>comp_name then DataModule1.ADOTable_Comps.FieldValues['compname'].asstring:=comp_name; if DataModule1.ADOTable_Comps.Modified=true then DataModule1.ADOTable_Comps.Post; end; lmikle: пользуемся тегами!!! Последний раз редактировалось alexnov, 21.04.2009 в 12:15. |
#6
|
||||
|
||||
Жэсть какая- то...
Шоб добавить запись надо использовать Insert, перед этим можно проверить на существование такой записи при помощи Locate. напиши лучше словами что именно ты хочешь сделать своей процедурой, бо та что ты написал, делает почти ничего |
#7
|
|||
|
|||
Ой, мама дорогая...
Ну ты хоть в папочку Demos залез бы. Посмотрел бы как работать с компонентами доступа к данным. Код:
procedure AddPC(AName : String); begin DataModule1.ADOTable_Comps.First; While Not DataModule1.ADOTable_Comps.EOF Do Begin If DataModule1.ADOTable_Comps.FieldByName('compname').AsString = AName Then Exit; DataModule1.ADOTable_Comps.Next; End; DataModule1.ADOTable_Comps.Append; DataModule1.ADOTable_Comps.FieldByName('compname').AsString := AName; DataModule1.ADOTable_Comps.Post; end; Грубо, без дополнительных проверок и т.д., но идея должна быть понятна. |
#8
|
|||
|
|||
Спасибо за помощь, понял вроде. В базу добавляет, но тут еще не пойму аочему при выполнении следующего кода у меня остальные поля заполняются не в найденной записи а в новой в конце таблицы?!!?
Цитата:
Последний раз редактировалось alexnov, 22.04.2009 в 10:46. |
#9
|
||||
|
||||
Потому-что:
Код:
DataModule1.ADOTable_Comps.Append; И еще, так писать Код:
if (DataModule1.ADOTable_Comps.Locate('compname',ANam e,[]))=false then Код:
if not DataModule1.ADOTable_Comps.Locate('compname',AName,[]) then Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 22.04.2009 в 10:22. |
#10
|
|||
|
|||
а что с
Цитата:
Проверил код в работе, пишет что нашел! |
#11
|
||||
|
||||
DataModule1.ADOTable_Comps.Append; - Это я так, поток сознания - не обращайте внимания.
Попробуйте отладчиком по шагам пройтись и посмотреть, что происходит. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#12
|
|||
|
|||
смотрел отладчиком, находит запись, но как проверить в ту ли запись он пишет? то есть означает ли что DataModule1.ADOTable_Comps.FieldByName('monitor'). AsString := text; это запись в найденную locatе'ом запись?
|
#13
|
||||
|
||||
777777777777777777777
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#14
|
|||
|
|||
ну то есть не понятно курсор почему сбивается с найденной записи и пишет в конец таблицы в новую строку!
|
#15
|
||||
|
||||
Насколько мне известно Append равносилен Insert, поэтому в конце и добавляется новая запись. Используй Edit для изменения текущей записи
|