![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вставка Id поля вместо значения [D7, Microsoft Access]
Vova © (2004-07-05 10:03:00)Подскажите как организовать запись в базу даних , єсть четире таблици ( Microsoft Access) , нужно програмним путєм записать в основную таблиу значениє Id полей трьох таблиц (визуальной аналог DBLookupComboBox), причем єсли такова значениє ненайдено в таблице то добавить новиє поле с етим значениєм да записать Id етова поля в основною талицу. Нужно бистродействующій алгоритм, я пробивал писать но очень долго работаєт:
1.Сначала через Table1.Locate() делал поиск в таблице 1 єсли ничево ненашло добавлял значениє.
2.потом опять Table1.Locate() опредилял значениє Id и записивал єто Id в основною таблицу, и так проход делаєтса по 3 таблицам, подскажите как упрастит ето!!!!!!!!!!!11
sniknik (2004-07-07 20:46:00) [1]за бабки - быстро и под "ключ", кінцевий вариант на руки.
бесплатно - медленно, на общей основе - вы делаете, мы помогаем с проблемами (если сами знаем).
у тебя проблем нет, есть желание на халяву получить то что обычно за бабки бывает. что больше жлобством отдает, еще большой большой вопрос.
WWW (2004-07-07 19:50:00) [2]Це що вже кінцевий варіант оптимізації ??????????????????
Всі якісь жлоби тільки про бабки думають !!!!!!!!!!!!!!
VOVA (2004-07-07 15:00:00) [3]procedure TForm1.Button1Click(Sender: TObject);
var
id1,id2,id3:integer;
begin
if not printers.Locate('printer',Edit1.Text,[loCaseInsensitive])
then
begin
printers.Insert;
printers.FieldValues['printer']:=Edit1.Text;
printers.Post;
id1:=printers.FieldValues['id'];
end else id1:=printers.FieldValues['id'];
if not host.Locate('host',Edit2.Text,[loCaseInsensitive])
then
begin
host.Insert;
host.FieldValues['host']:=Edit2.Text;
host.Post;
id2:=host.FieldValues['id'];
end else id2:=host.FieldValues['id'];
if not users.Locate('user',Edit3.Text,[loCaseInsensitive])
then
begin
users.Insert;
users.FieldValues['user']:=Edit3.Text;
users.Post;
id3:=users.FieldValues['id'];
end else id3:=users.FieldValues['id'];
Log.Insert;
log.FieldValues['printer']:=id1;
log.FieldValues['host']:=id2;
log.FieldValues['user']:=id3;
log.FieldValues['tip']:=Edit4.Text;
log.FieldValues['name']:=Edit5.Text;
log.FieldValues['page']:=strtoint(Edit6.Text);
log.Post;
end;
вот що я набрасал работаєт но неуверен што будет успевать!!!!!!!!1
VOVA (2004-07-07 14:11:00) [4]Блин ви думаєте за це мени заплятять, ага дождуся,я для себе пишу взагалито а на продажу писати не той ривень ще в мене, в мене в сети тонер кудись диваєтся банками , а от проследить хотелося кто и што печатаєт, а з 20 копов идет dani:record .....; от их хочу рписать в базу. Я уже тут нашол куча софта но мне не подходит, думал кинуть писать когда мучалса з сивисом, но запустил всьотаки тепер в базу писать знов муцениє, а потом ищо хотел добавить ограницениє копий пользователям но там зноа с API возитса тамболиє из под сервиса. пока нипишу то весь запас тонера удєт.
От коротко о проблеме!!
bushmen (2004-07-07 13:59:00) [5]> да от SQL учит то времени нет!!!!
Интересно, а зарплату свою ты нам будешь перечислять? :))
Курдль (2004-07-07 13:49:00) [6]
> VOVA (07.07.04 13:08) [22]
> Люди добриє помогите!!!!!!!!!
Еще вариант - опиши кратко бизнес-процесс. Чего-там за 20-ю компами делается и что получить-то надо!
VOVA (2004-07-07 13:42:00) [7]я так наброску зделал:
1.Сначала через Table1.Locate() делалаю поиск в таблице 2,3,4 єсли ничево ненашло добавлял значениє.
2.потом опять Table1.Locate() опредиляю значениє Id и записую в таблицу 1.
НО мне кажетса щто так оно медлено будет работать, бо пакети валят сразу з 20 компов просто будет неуспевать обработать. я уже подумал может чере поток пустить.
И мне кажется через ADOQuery оно должно бистреє чем ADOTable1, да от SQL учит то времени нет!!!!
Соловьев (2004-07-07 13:19:00) [8]в чем конкретно запарка? с алгоритмом тебе не помогут. реши сам, покажи как решил, а тут уже покритикуют.
VOVA (2004-07-07 13:08:00) [9]Люди добриє помогите!!!!!!!!!
vova (2004-07-07 11:53:00) [10]подкинте реальной алгоритм а вчера из сервисом провозилса целий день а тепер ищо з базой день , то наето уйдєт месяц
vova (2004-07-07 11:51:00) [11]неполучаєтса огранизовать запись
на server нужно записат в log.mdb єту структуру в четире таблици
1 таблица пишет ID host,id user, id Ip,........
2 таблица два поля id и host
3 таблица два поля id и user
4 таблица два поля id и ip
Ножно бистро записать запись dani в таблицу причом єсли в какой нибуть из таблиц 2,3,4 нет значениє то добавить и записать id етого поля в таблицу 1.
Соловьев (2004-07-07 11:23:00) [12]
> ну ладно та помогите пожалиста пример а там уже проще
без проблем, что не получается?
vova (2004-07-07 11:23:00) [13]ну ладно та помогите пожалиста пример а там уже проще
Соловьев (2004-07-07 11:20:00) [14]чем тебя http://www.delphimaster.ru/cgi-bin/forum.pl?id=1089179265&n=1&web=1не устроил?
vova (2004-07-07 11:19:00) [15]короче єсть два диска компонентов один для баз второй для интернету и т.п.
Соловьев (2004-07-07 11:19:00) [16]
> Version 2.5
уже есть 3.3, еще более навороченная:)
vova (2004-07-07 11:17:00) [17]єсть похожая
EhLib history
Version 2.5
+ Added Delphi 7 support.
+ New units: CalculatorEh - TCalculatorEh, TPopupCalculatorEh
DbUtilsEh - Utilities to sort data in DataSet from DBGrid
EhLibADO - Register object that sort data in TADOQuery
EhLibBDE - Register object that sort data in TQuery
EhLibCDS - Register object that sort data in TCustomClientDa
Очень навороченая
Курдль (2004-07-07 11:10:00) [18]
> vova (07.07.04 11:06) [12]
> могу дать кучу компонентов на любой вкус!!!!
Ура!!! Хочу "Extra Grid 5" от "Developer Express" для VS.NET!
vova (2004-07-07 11:06:00) [19]могу дать кучу компонентов на любой вкус!!!!
sniknik (2004-07-07 10:49:00) [20]> тогда быстрее, чем locate сделать будет трудно
легко. seek (хотя и на немного, локейт проверяет на индеки и использует если есть а сик использует текуший без проверок и вариаций)