Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi 2

Модерирует : ShIvADeSt

ShIvADeSt (22-03-2007 02:18): http://forum.ru-board.com/topic.cgi?forum=33&topic=8142  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы http://forum.ru-board.com/topic.cgi?forum=33&topic=3647&start=2020#lt
Внимание, все большие куски кода (более 5 строк) оформляем в тег [more] дабы уменьшить размер поста.

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:52 20-04-2006 | Исправлено: ShIvADeSt, 02:02 30-06-2006
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
31416
http://forum.ru-board.com/topic.cgi?forum=33&topic=6000#lt

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:54 23-06-2006
Aladdinych



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1. У меня не IB6 а Firebird 1.0.0.338, но это я думаю не принципиально.
2. Зачем мне нужен доступ к открытым датасетам в основной программе.
Идет заполнение данных пользователем, и для автоматизации заполнения по клику на кнопке вызывается внешняя процедура. Из нее, в экранной форме пользователь вводит несколько данных, как правило выбор из списка, и по завершению по кнопке ОК должны обновляться датасеты в основной программе. Всего их пока два (датасета). При этом в первый добавляется одна запись с автозаполнением полей, а во второй могут добавляться, удаляться или модифицироваться записи опять же с автозаполнением полей. Если нельзя передавать на эти датасеты указатели во внешнюю процедуру, то надо как-то синхронизировать их со своими датасетами в этой внешеней процедуре. Мне кажется, что такая задача еще сложнее, и я не очень представляю как ее решать.
3. АВ выскакивает всякий раз, при вызове внешней процедуры. Внури этой процедуры, есть строчка типа datasource1.dataset:=table где  datasource1 - компонент на форме внутри внешнего модуля, а table - как раз передаваемый параметр. Если эту строчку закомментировать то АВ исчезает.
 
Добавлено:
4. И в dll и в основной программе первым модулем включен fastsharemem.
5. Основное приложение давно уже создано раньше. Его надо немного доработать так, чтобы за счет подключения внешних модулей можно было дополнять и расширять его его возможности. Использование bpl мне не нравится. Не хочу за приложением таскать кучу стандартных библиотек в виде тех же bpl. Поэтому самый очевидный выход работать с dll.

Всего записей: 322 | Зарегистр. 18-10-2005 | Отправлено: 08:24 23-06-2006
russko



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос относительно формирования отчетов с помощью комопнента EMS Advanced Excel Report. Кто пользовался подскажите пожалуйста, каким образом можно получить список данных, сгруппированных таким образом, что после например 4 позиций, собранных вместе выводился итог, например суммарное кол-во. Ранее я использовал комопнент AfalinaSoft Xlreport и там достаточно было поставить слово "group".
На примере это выглядит так: допустим есть два поля: наименование товара и его количество.
В ведомости один и тот же товар может встречаться несколько раз с разным кол-ом. Нужно, чтобы в отчете выводились поочередно эти "одинаковые" наименования и после каждой такой группы итог - суммарное кол-во в данной группе

Цитата:
 
Наименование1 | Кол-во1
Наименование1 | Кол-во2
Наименование1 | Кол-во3
.................Итог | Сумма
Наименование2 | Кол-во1
Наименование2 | Кол-во2
Наименование2 | Кол-во3
.................Итог | Сумма
и т.д.
 

Спасибо.

Всего записей: 176 | Зарегистр. 20-07-2005 | Отправлено: 09:46 23-06-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
31416

Цитата:
 чтобы не выскакивало логин \ пароль когда tquery активизируется

У TDatabase свойство LoginPrompt в False установи

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 10:29 23-06-2006
31416

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такая вот проблема:
работаю в bde с interbase базой. Создаю объект datasource и связывю с  
tquery. При выполнении запроса из таблицы должно изелечся только одно поле
(т.к оно в ней одно c id=0) но мне почемуто Ds.DataSet.FieldCount выдает =3 и в
dataset заполняются обсалюто 3 одинаковых поля с id=0.. в чем тут может быть дело?
 
вот код:
 
q.SQL.Clear;
q.SQL.Add('SELECT * FROM TREE WHERE PARENT_ID=0');
 
ds:=tdatasource.Create(form1);
ds.DataSet:=q;
ds.Enabled:=true;
q.Active:=true;
 
Ds.DataSet.FieldCount //вот тут оно равно 3 а должно быть 1
 
 
 
Добавлено:
и причем если выполнить
dbgrid1.DataSource:=ds;
в dbgreed отображается только 1-о поле хотя  Ds.DataSet.FieldCount=3....

Всего записей: 172 | Зарегистр. 19-07-2005 | Отправлено: 12:03 23-06-2006 | Исправлено: 31416, 12:23 23-06-2006
russko



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
31416
Попробую перед
Цитата:
Ds.DataSet.FieldCount
поставить  Ds.DataSet.FetchAll.
Такие глюки бывают в стандартных компонентах Interbase. Поэтому давно все используют FIBPlus, чего и ам желаю ))

Всего записей: 176 | Зарегистр. 20-07-2005 | Отправлено: 12:19 23-06-2006
31416

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я б тоже желал о в задание о приеме на работу стоит именно interbase через bde )))

Всего записей: 172 | Зарегистр. 19-07-2005 | Отправлено: 12:24 23-06-2006
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
31416
Как бы тебе помягче намекнуть о консерватории, даже и не знаю. Ну да ладно.
FieldCount это количество полей, select *  это выбрать ВСЕ ПОЛЯ из таблицы.
WHERE PARENT_ID=0 - выбрать все ЗАПИСИ из таблицы, где поле PARENT_ID=0.
Количество записей это RecordCount.
russko
Не пугай меня так: FetchAll и FieldCount.....может все-таки RecordCount

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 12:27 23-06-2006
russko



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ааа, а даже не посмотрел на FieldCount )))
даже и подумать не мог )))
проуш прощения
конечно всё сказанное мной выше относится к RecordCount ))

Всего записей: 176 | Зарегистр. 20-07-2005 | Отправлено: 12:28 23-06-2006 | Исправлено: russko, 12:29 23-06-2006
31416

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
дело было в том что обращаться нужно к ds.DataSet.RecordCount а не к Ds.DataSet.FieldCount вот так вот )))

Всего записей: 172 | Зарегистр. 19-07-2005 | Отправлено: 12:29 23-06-2006
OXDBA

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
в dbgreed отображается только 1-о поле

Тогда это ты очем? Если о записи, то да, если все-таки о поле, то ...
 

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 12:34 23-06-2006
31416

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
все ок. мне нужно было перебрать записи
 
Добавлено:
вопрос по interbase
есть таблица -  
CREATE TABLE "TREE"  
(
  "ID"    INTEGER NOT NULL,
  "PARENT_ID"    INTEGER NOT NULL,
  "SECTION"    CHAR(30) NOT NULL,
 UNIQUE ("SECTION"),
 PRIMARY KEY ("ID")
);
 
как сделать чтобы при INSERT INTO TREE (parent_id,section) VALUES (1, 'NAME');
поле id автоматически автоинкрементривалось?
 
Добавлено:
спасибо я понял нужно так -
CREATE GENERATOR GEN_KEY;
 
SET TERM !! ;
CREATE TRIGGER SET_ID FOR TREE
BEFORE INSERT AS
BEGIN
    new.id = gen_id(GEN_KEY, 1);
END !!

Всего записей: 172 | Зарегистр. 19-07-2005 | Отправлено: 12:35 23-06-2006
YurikGL



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
как сделать чтобы при INSERT INTO TREE (parent_id,section) VALUES (1, 'NAME');  
поле id автоматически автоинкрементривалось?  
 

Если не ошибаюсь, можно проще
 
INSERT INTO TREE (parent_id,section) VALUES (gen_id(GEN_KEY, 1), 'NAME');  
 
 

Всего записей: 308 | Зарегистр. 02-09-2004 | Отправлено: 22:05 23-06-2006
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YurikGL
Можно и так, только вариант с триггером более универсальный, и если будет вставка не через программу, то запись корректно вставится.

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 13:52 24-06-2006
YurikGL



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
YurikGL  
Можно и так, только вариант с триггером более универсальный, и если будет вставка не через программу, то запись корректно вставится.

Не люблю делать через триггеры т.к. иногда надо после этого этот id-к получить... или вставить явно с явным id-м. Тогда этот триггер мешаться будет.

Всего записей: 308 | Зарегистр. 02-09-2004 | Отправлено: 14:00 24-06-2006
FireZone

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YurikGL
Цитата:
или вставить явно с явным id-м. Тогда этот триггер мешаться будет.
Вот так не будет мешаться
Код:
CREATE TRIGGER SET_ID FOR TREE  
BEFORE INSERT AS  
BEGIN  
  if (new.id is null) then
    new.id = gen_id(GEN_KEY, 1);  
END
Поскольку триггер будет задавать значение только если оно не задано клиентом явно.

Всего записей: 293 | Зарегистр. 28-01-2004 | Отправлено: 11:10 25-06-2006
ckotick

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня есть такая идея. Скажите, насколько возможно ее осуществление?
В приложении два TTcpServer. Один "рабочий", второй - "контролирующий". Предположим, "рабочий" переглючило. Я хочу, чтобы была возможность соединиться с "контролирующим" и прервать выполнение потоков "рабочего". Возможно даже уничтожить и создать заново. В принципе, задачу эту я решил. Но в случае, если "рабочий" "висит", уничтожить его не получается. А мне хотелось бы, чтобы перезапуск был возможен в любом случае. Возможно, в рамках одного приложения это в принципе не возможно, и стоит сделать два приложения (сервиса)?

Всего записей: 153 | Зарегистр. 01-08-2005 | Отправлено: 08:30 26-06-2006
reenoip



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ckotick, а если попробывать повесить автозапуск второго TTcpServer на "OnDisconnect" или "OnError" первого? И, соответственно, на "OnConnect" первого TTcpServer повесить сброс/обнуление второго?
Названия процедур, конечно, чисто условные
 
Добавлено:
А вообще, по-моему, надо искать нормальный TCPServer, чтобы был один в одном приложении. А второй толкать в сервис, если есть необходимость. Могу и ошибаться, статуса "чайник" меня ещё никто не лишал, но предположить/предложить я всегда могу

Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 08:53 26-06-2006
ckotick

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вообще я наверное не совсем точно изложил суть проблемы.
Планируется, что сервер будет принимать какие-то данные от клиентов (команды), "что-то" там у себя делать и отправлять клиентам ответы. Вот это "что-то" может вполне его загнуть. Я хочу сделать возможность убивать все рабочие потоки приложения, связанные с этим сервером.
Как вариант делал следующее: по приему пакета от клиента сервер впадал в бесконечный цикл. При этом дальнейшие соединения были возможны до определенного предела. Соединение через контрольный TcpServer с отправкой команды на убиение первого ни к чему не приводило. Хотя реально пока первый не "висит", убийство (.Destroy) вполне прокатывает.
 
Есть у меня еще одна проблема.
Написал библиотеку. Вроде бы все работает - экспортируемые процедуры-функции спокойно вызываются внешней программой, возвращают необходимые результаты.. Но при завершении приложения вылетает run-time ошибка. Как я понимаю, библиотека выгружается некорректно. Читал help про процедуру инициализации. В принципе даже все понял.. Но вот пример кода меня вогнал в ступор. Не работает.

Всего записей: 153 | Зарегистр. 01-08-2005 | Отправлено: 09:40 26-06-2006 | Исправлено: ckotick, 09:47 26-06-2006
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ckotick

Цитата:
Планируется, что сервер будет принимать какие-то данные от клиентов (команды), "что-то" там у себя делать и отправлять клиентам ответы.

аналогичная проблема (решается через потоки все это)
http://forum.ru-board.com/topic.cgi?forum=33&topic=6920&start=0#lt там много чего полезного найдешь.


----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 10:12 26-06-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi 2
ShIvADeSt (22-03-2007 02:18): http://forum.ru-board.com/topic.cgi?forum=33&topic=8142


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru