Ваши мудрые предложения по проблеме

Программирование на Visual Basic for Applications
Deja-vu
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 02.11.2004 (Вт) 22:02

Ваши мудрые предложения по проблеме

Сообщение Deja-vu » 10.03.2005 (Чт) 23:46

Здравствуйте!
Надумал я тут съэкономить на работе время, да только не знаю, как за задачу взяться. С какой стороны заходить? :lol:

Условия:
1. Три компа с уникальными IP сидят в сети. Два из ни - клиенты, а третий - сервер.
2. На клиентах установлена программа, в которой используются документы Word. Документов несколько, около десяти на каждом клиенте.

Нужно:
1. Создать шаблон (очень важно, что это именно шаблон, то есть годится для любого клиента) документа word. В шаблоне разместить textbox`ы чтобы юзер мог вводить туда разную инфу (около 8 боксов).
2. После того, как юзер вписал инфу в боксы и нажал "save", инфа из этих боксов идет в определенные ячейки файла excel на машине сервера...
3. Если файл word запускают не на клиенте а на сервере, и сохраняют что-то, не должно происходить ничего...

Вопросы:
1. Можно ли реализовать все это без всяких там баз данных и тд... (извиняюсь за ламерство, но я только учусь :))
2. При обращении к файлу excel сразу обеих клиентов (хотя это маловероятно, данные, по идее мизерные), не выйдет ли ошибка в доступе? (выйдет конечно, но возможно ли обеспечить одновременный доступ?)
3. Какие подводные камни вы видите?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.03.2005 (Пт) 6:45

Обязательно выйдет ошибка в доступе, по причине того, что два клиента, одновременно открыв файл, начнут писать в одну и ту же последнюю строку, после чего эксель будет спрашивать, какую из двух версий сохранить :)

Есть мнение сделать мааааленькую базу в Access, в ней одну маленькую табличку (около 8 полей) и один маленький запрос на добавление на манер
Код: Выделить всё
PARAMETERS paramTextBox1 text, paramTextBox2 text, paramTextBox3 text, paramTextBox4 text, paramTextBox5 text, paramTextBox6 text, paramTextBox7 text, paramTextBox8 text;
INSERT INTO Table1 VALUES (paramTextBox1, paramTextBox2, paramTextBox3, paramTextBox4, paramTextBox5, paramTextBox6, paramTextBox7, paramTextBox8)

Сохранить его под именем AddEntry, например.

После чего подключить в Ворде библиотеку Microsoft ActiveX Data Objects, и написать чё-нить на манер
Код: Выделить всё
dim conn as new adodb.connection, c as new adodb.command, i as long

conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & PathToServerDatabase & ";Mode=Read|Write|Share Deny None;Persist Security Info=False"
c.CommandType = adCmdStoredProc
c.CommandText = "AddEntry"

for i=1 to 8
  c.Parameters.Append c.CreateParameter("paramTextBox" & cstr(i), adBSTR, adParamInput, , controls("textbox" & cstr(i)).text)
next

c.execute
conn.close
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Deja-vu
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 02.11.2004 (Вт) 22:02

Сообщение Deja-vu » 11.03.2005 (Пт) 22:37

GSerg Спасибо за предложение! Будем думать! 8)
Всем участникам: Друзья, поактивней! Я же не прошу за меня работу написать... я совета прошу, так сказать, наипростейшую принципиальную схему... :roll:

IVAN008
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.02.2005 (Вт) 12:19

Сообщение IVAN008 » 12.03.2005 (Сб) 21:21

Согласен полностью с GSerg
Deja-vu - Коль ты уже задумался об автоматизации заполнения данных и месте их хранения, а в дальнейшем будешь еще думать об удобстве их обработки :-) так не лучше ли сразу обратить свой взор на базы данных и как простейшую в освоении Access там если немного посидеть и подумать в базе Борей есть практически фсё для начала. А решать вопрос ввода и хранения данных с помощью ворда и экселя .... ну оно конечно мона, но зачем же через задницу :-)
Просто я сам столкнулся с подобной проблеммой у меня на фирме фся статистика в экселях чтобы чего-то новое вносить или найти нужную инфу в уже введенном..... ЖУТЬ!!! а о базе данных и слышатьне хотят - ИНЕРЦИЯ мать её. Так что мой совет начинай все с правильного конца (извиняюсь за каламбур) :-)

Deja-vu
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 02.11.2004 (Вт) 22:02

Сообщение Deja-vu » 13.03.2005 (Вс) 17:07

IVAN008 Спасибо за добрый совет. Дело в том, что у меня на работе точно также, как и у тебя :lol: Статистики полным полно... На данный момент, вся статистика ведется специальной программой, в которую я не лезу, есс-но. А вот подстатистика ведется в файлах word которые привязаны к программе статистики :) Юзер производит операции, вводит статистику, а также записывает в word разные параметры вручную, потому, что они несистематичны, и предвидеть их невозможно... :cry:
Я конечно, понимаю, что в идеале, надо делать как сказал Gserg , но через 2 года на фирме меняют эту программу и вообще способ занесения данных статистики. Вот и подумалось, сделать что-то сверх легкое, чтобы потом не жалко было потраченного времени 8)

Вопрос: Поскольку у меня всего 2 клиента, то в данном случае, не будет ли наиболее простым вариантом такая схема?

1. Оба клиента имеют свой файл excel куда они пишут инфу.
2. Сервер по сетке по мере надобности обращается к обоим файлам и выдает результирующий файл excel...

Как вы думаете?

И еще: возможно ли провести обращение для чтения к файлу, если он открыт? :shock:


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList