Много вопросов, один - супер вопрос

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Много вопросов, один - супер вопрос

Сообщение Dummiel » 26.07.2004 (Пн) 12:09

Здравствуйте!
СИСАДМИНЫ!!! Не по голове не бейте за этот роман - действительно много вопросов!
Есть у меня множество в вопросов по VB 6.0, на форумах отвечают через раз, если не через 10, на многие вопросы вообще не отвечают, да и нет у меня дома выхода в Инет, в Инет-салон доби-раюсь раз в год. Вопросы иной раз мелочевочные, в учебниках таких мелочей часто нет. Огово-рюсь сразу – кому-то вопросы покажутся детсадовскими, но этот кто-то тоже ведь когда-то начи-нал?
Итак, по порядку (при работе с БД крайне желательно не использовать объект Data):
1. Имеется одна для всего мира База Данных, содержащая более 4000 записей (Международ-ная классификация болезней - МКБ). Как программно переносить некоторые записи из нее в свою БД, не занося все ее записи в таблицу в своей БД? Если так сделать, сами понимаете, какой монстр получится из моей БД. Конкретно: для каждой болезни существует ее уникальный во всем мир код МКБ. В мою БД (данные о конкретном пациенте) нужно заносить только код (он 5-6-значный), но не заносить в нее название заболевания (диагноз), название его нужно только выводить в форму для просмотра. В общем, на диске через одно приложение (в разные моменты времени) будет осуществляться доступ к обеим БД, т.е., нужно связать не таблицы в одной БД, а поля таблиц в двух разных.
2. Как программно проверить, открыта ли какая-либо БД в данный момент времени, если да, то какая? Суть: в сервисе проги делаю телефонный справочник. Пользователю нужно разрешить модифицировать его записи без зависимости от других открытых БД и таблиц. Таблица телефон-ного справочника находится в общей БД. Я представляю это так: при входе в справочник нужно где-то запомнить все открытые области, БД, таблица и поля, открыть нужные, при выходе - за-крыть отработанные и открыть изначальные. Не знаю только, как это реализовать программно.
3. Супервопрос (зато не срочный) - при переходе на новое приложение пользователю, воз-можно, понадобится перенести в него данные из других форматов БД (FoxPro, Paradox и т.п.). Как это сделать программно, не набивая их тупо вручную. При этом желательно учесть, что некоторые данные в них не совпадают (могут отсутствовать одни, или, наоборот, присутствовать другие по-ля).
4. Как проверить, какие формы открыты (загружены) в данных момент времени, если тако-вые есть, то как узнать их имена? Конкретно: имеется изначальная родительская MDI-форма, из нее открывается дочерняя, а из дочерней формы открываются еще несколько (для разных таблиц в БД), назовем их «субдочерними». При закрытии дочерней формы нужно проверить, нет ли откры-тых (не обязательно активных) субдочерних форм, если таковые есть, то закрыть (выгрузить) их.
5. Как при работе с MSFlexGrid сделать так, что бы при помещении курсора на заголовок столбца он менялся на направленную вниз стрелку, при помещении его на левый фиксированный столбец (типа «заголовок» строки :-)) он менялся на стрелку, направленную вправо (подобно рабо-те с DBGrid). При щелчке на заголовке столбца чтобы происходила сортировка записей в этом столбце, а при щелчке на «заголовке» строки в левой фиксированной ячейке появлялся значок ти-па треугольника, который при щелчке на другой строке исчезал бы с предыдущей? В общем, эти фишки есть в DBGrid, но мой VB 6.0 почему-то кричит, что нет на соответствующий *.ocx лицен-зии. Хотя другая прога, написанная на VB 5, работает с ним без проблем. Я месяц промаялся с DBGrid, и перешел на MSFlexGrid. С ним хоть что-то получается.
6. Дополнение – позже я кое-как дошел до сортировки столбца при щелчке на его заголовке, но не понял, как он сортирует данные именно в этом столбце без явного указания его номера. Код у меня такой:

Private Sub flTelSpr_Click() ‘flTelSpr - это MSFlexGrid
With flTelSpr
If .Row = .FixedRows Then
'сортируем данные в столбце
.Sort = 1
'cнимаем выделение столбца
.Col = 0 ‘<------
.ColSel = 0
End If
End With
End Sub

Здесь есть глюк: при щелчке на пустой таблице вызывается ошибка 30009 - Invalid Row Value. Можно, конечно, ее обработать, но хотелось бы знать, чем она вызвана. При остановке про-граммы выделение желтым цветом происходит строки, указанной стрелкой <-----.
Еще глюк (самый глючный): при помещении курсора и щелчке на первой нефиксированной строке происходит то же, что и при щелчке на фиксированной (т.е., на заголовке). MSFlexGrid реа-гирует одинаково на заголовок, и на первую строку, содержащую отображаемую запись БД. Соот-ветственно, при использовании MSFlexGrid.RemoveItem последняя строка (по номеру сетки - пер-вая) не удаляется – нельзя, грит, фиксированную строку удалить. Далее. При щелчке в левом верхнем углу сетки происходит выделение всей сетки, что, в общем-то, неплохо, но и при щелчке в 1-м нефиксированном столбце 1-й нефиксированной строки (т.е., это не заголовке, а уже записи) происходит так же выделение всей таблицы. М.б., для кого-то это непринципиально, но меня ис-комое унижает ;-)
7. Как сделать в MSFlexGrid сортировку по двум столбцам сразу (на примере телефонного справочника – имеется несколько учреждений, в каждом из них будут одинаковые отделы, но в одном учреждении одинаковых отделов, соответственно, нет). Нужно, чтобы в первом столбце выводились отсортированные по алфавиту учреждения, и отделения этих учреждений были бы расположены по алфавиту во втором столбце.
8. Как встать на нужную запись в MSFlexGrid? Суть: для редактирования записи при щелчке на кнопке формы «Редактировать» выводится InputBox, который просит ввести номер записи.
9. Еще - не могу справиться с MS Access 2000. При удалении записей из таблицы не про-граммно, а через Access, счетчик таблицы не обнуляется, и, при добавлении в нее последующих записей, он начинает счет от последней существовавшей. Допустим, в таблице изначально было 15 записей (значение счетчика, соответственно, тоже 15). При их полном удалении, и последующем вводе других записей, поля счетчика начинают заполняться с №16. Как справиться с этим?
11. Как реализовать контекстное меню при щелчке правой кнопкой мыши, причем так, чтобы меню соответствовало тому объекту, на котором был произведен щелчок? Я сделал такое меню по тем рекомендациям, что нашел в различных источниках в Инете (к слову, рекомендации одинаковы) – т.е., кидаешь на форму меню, делаешь первый пункт его visible = false, и далее по обычному пути. Затем через Mouse_Up и Mouse_Down его вызываешь и прячешь. Но вот незадача: при загрузке той формы, в которой я сделал подобное меню (а это дочерняя форма) исчезает меню в родительской MDI-форме, т.е., главное меню программы. Его нет до тех пор, пока дочернее окно с меню активно. Как только я из контекстного меню вызываю другую форму (неважно какую, лишь бы форма была активной), тут же появляется главное меню в родительской форме. При вы-ходе из вызванной формы и возврате в ту дочернюю, где имеется контекстное меню, главное сно-ва исчезает. Надо что-то делать здесь! Так работать опять же унизительно! :-) И еще нужно, чтобы при щелчке правой кнопкой на MSFlexGrid появлялось контекстное меню, и определялся номер той строки, на которой находился курсор во время щелчка. Или нужно делать форму, кидать на нее соответствующие Label’ы, прятать-показывать ее и обрабатывать Label(N)_Click? Нудно!
12. Как на форме сделать фреймы по типу как при просмотре Help’а в MS Office? Т.е., что-бы при помещении курсора на границу между фреймами он бы менялся на двунаправленную стрелку влево-вправо при вертикальном фрейме или вверх-вниз при горизонтальном и перетаски-вал бы потом границы фреймов. Соответственно, поместить туда два Textbox’а или два MSFlex-Grid’а (для моей задачи MSFlexGrid’ы нужнее), причем так, чтобы при изменении размеров фрей-мов их содержимое отражалось бы как положено, т.е. начало было бы всегда слева-сверху. Это реализовано в проге на VB 5, о которой я упоминал, но там во фреймах DBGrid’ы, а с ними мой VB 6 не дружит. И потом, на форумах часто упоминают о том, что MSFlexGrid лучше (или про-ще?) DBGrid’а.


Я, конечно, понимаю, что ответы на эти вопросы займут много времени (особенно на третий – ответ на него уже само по себе маленькое приложение), но уж больно хочется. А приложение хочется сделать не хуже общепринятых стандар-тов, так, чтобы Билл Гейтц заплакал от зависти, напился от горя, продал бы свой Microsoft за бес-ценок и запросился ко мне в ученики ;-)))!

С уважением – Dummiel.
Mailto: dummiel@list.ru

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 26.07.2004 (Пн) 13:14

Н-да... Нечитабельно, батенька. Вы бы разбили на 12 разных тем, а?
Насчет первого - а что тебе даст список из абстрактных чисел? У них же даже названия нет, соотв-но, смысловая нагрузка - ноль. Далее, 4000 записей - это копейки, у меня на сиквеле 5-гигабайтные базы вертятся, и ничего, все летает. Кстати, что-то мне не верится, что у нас во всем мире всего 4000 болезней - ты в порядках не ошибся. И это, заметь, далеко не предел - известны случаи, когда грамотный DBA держал работоспособной 150Гб базу на все том же MSSQL. Ясен пень, что там без федеративных серверов не обошлось, но это уже детали, как говорится. Так что, если есть такая возможность - копируй все себе, оно быстрее работать будет.
Насчет остального... разбивай на частм, ни фига не читабельно.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.07.2004 (Пн) 13:38

если у тебя такие вопросы возникают, то может проще обратиться к нормальному программеру, чтобы он тебе написал нужную прогу :o

а по существу - поиском по форуму, там эти вопросы уже обсуждались

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 29.07.2004 (Чт) 6:29

Конструктивному критику
Привет!
1. Насчет нечитабельности - все разбито по подразделам, что тут нечитабельного?

2. По поводу 4000 болезней - если быть точным, что-то около 4400, поверь мне, как врачу. Если хочешь, зайди в любой статотдел в любом лечебно-профилактическом учреждении.
Цитата: "Статистика знает все, она не знает только, сколько в стране стульев. (Ильф и Петров - 12 стульев)"

3. Ты окаких супермегагигах говоришь, когда в нищих учреждениях здравоохранения 1-й Пень - это предел мечтаний?
Цитата: "Люди! Думайте, над чем смеетесь! (Команда КВН Новосибирского политеха, 2001 год)"

Насчет возможных ответов - я же не прошу сразу и все. Хотя мысль мне понравилась. Просьба к модераторам сайта - на меня не ругаться, я все повторю по отдельным темам.

С уважением - Dummiel.

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 29.07.2004 (Чт) 7:11

Конструктивному критику - добавочка:
У абстрактных чисел суть такова - из МКБ переносится код заболевания в мою БД. При выводе на форму прога метется к БД МКБ, по коду находит название заболевания, и вносит его в Label.Caption на форме.
Суть:
1. Зачем хранить в своей БД название заболевания, у которого м.б. больше 255 знаков, если можно хранить 5-6 знаков.
2. Зачем переносить записи из БД МКБ, когда она универсальна и одинакова для всего мира (повторяюсь), когда можно просто перенести из нее код, тем более, что он обязателен для внесения во всю меддокументацию, и названия заболеваний сейчас не пишут даже в больничных листах.

Продвинутому пользователю:
Привет!
По поводу программера - а тебе знакомо чувство "ГлЫбокого удАвлетвАрения", когда все сам сделаешь? :wink:

Всем спасибо. А темы я разбил!

dr-vic
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 13.01.2004 (Вт) 0:05

Сообщение dr-vic » 29.07.2004 (Чт) 22:24

Кинь мне свой e-mail, я тебе подробно отвечу, а то, сам понимаешь, ответ на твой "роман" по-боле самого романа будет!
dr-vic@mail.ru

dr-vic
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 13.01.2004 (Вт) 0:05

Сообщение dr-vic » 29.07.2004 (Чт) 22:26

Ой, сорри, я твоё мыло пролистал и не заметил!
Жди к понедельнику.


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot и гости: 33

    TopList  
cron