Как создать *.exe в VB6 из проекта VBA?

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

Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 25.01.2014 (Сб) 15:54

Сразу прошу прощения, если вопрос уже задавался, и не ругаться, а отправить по ссылке. Или же, если есть грамотное описание на других ресурсах... Поиск адекватного результата не дал.

Оговорюсь сразу: я - новичок. Несколько лет назад писал простенькие программы на VB6, но из-за малоопытности и с течением времени всё как-то подзабылось...
А теперь о задаче.
Я набросал в Excel некий калькулятор для расчёта услуг, который работает с прайс-листом, находящимся в той же книге на другом листе. Средствами VBA создал форму с различными элементами управления, которые обращаются к прайсу и листу с функциями для вычисления значений. Форма работает нормально. НО!!! На работе стоит OpenOffice... со всеми вытекающими. Многие функции моего калькулятора не работают.
Вопрос: можно ли как-то преобразовать проект VBA в проект VB6, а затем в *.exe, чтобы готовая программа не обращалась к файлу Excel, а хранила бы эти данные в себе? Или, если это невозможно, подскажите, как можно все данные из Excel книги перенести в проект VB6, чтобы элементы управления обращались уже к ним? Знаю, что в VB6 также можно создавать таблицы с данными, массивы, но по своей неопытности не знаю, как правильно это сделать.
У каждого своя истина... но каждому - своё зло!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Хакер » 25.01.2014 (Сб) 22:00

Невозможно из VBA проекта получить EXE. Иначе бы пришлось в этот EXE затолкать весь Excel.

Или одним кликом из .xls-файла получить VB6-проект — в общем случае это тоже невозможно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение ger_kar » 25.01.2014 (Сб) 23:32

Вместо Excel для хранения данных и работы с ними можно использовать базу данных, например MS Jet, на котором работает MS Access (mdb файл). Причем сам Access ставить не обязательно. Ну и сам проект конечно нужно сразу создавать в VB6, и с тем проектом VBA Excel, который уже существует, он будет иметь мало общего.
Бороться и искать, найти и перепрятать

Sha.man
Новичок
Новичок
Аватара пользователя
 
Сообщения: 36
Зарегистрирован: 25.01.2014 (Сб) 15:05
Откуда: Краснодар

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 26.01.2014 (Вс) 2:14

Хорошо, я согласен, что Excel сюда пришить нельзя и придётся перелопачивать гору работы... Но подскажите, где можно почитать о базах данных для VB6? Как их создавать? Можно ли в них использовать функции, подобные Excel или там совсем всё иначе? Например, в Excel функция =если(...;...;...). Как можно заменить её в VB6? Я понимаю, что в двух словах не объяснить, поэтому просто подскажите, где почитать. Просто весь построен на динамических списках, которые используют функции ЕСЛИ и ВЫБОР. Теперь мне нужно узнать, как можно реализовать то же самое в VB6. Спасибо.
P.S. Кстати, у меня Винда 7, х64. Знаю, что не все поставщики работают под ней.
У каждого своя истина... но каждому - своё зло!

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение iGrok » 26.01.2014 (Вс) 2:34

Sha.man писал(а):Например, в Excel функция =если(...;...;...). Как можно заменить её в VB6? Я понимаю, что в двух словах не объяснить, поэтому просто подскажите, где почитать. Просто весь построен на динамических списках, которые используют функции ЕСЛИ и ВЫБОР. Теперь мне нужно узнать, как можно реализовать то же самое в VB6.

Оу.. Это действительно гора работы. ЕСЛИ = IIF, аналога "ВЫБОР" нет, придётся писать свою логику для этого дела, причём в этом даже вряд ли есть смысл, скорее всего то, что делается при помощи "выбор" можно реализовать средствами VB проще.

В общем, при таких входных условиях проще заново с нуля реализовать проект на vb6, взяв vba-проект в качестве основы для разработки спецификации.

Если данных не очень много, и это действительно некий калькулятор, оперирующий прайс-листом, на БД скорее всего нет смысла смотреть, разумнее будет экспортировать прайс в csv, и брать информацию оттуда.
label:
cli
jmp label

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Template » 26.01.2014 (Вс) 9:18

iGrok писал(а):... аналога "ВЫБОР" нет...


Вообче-то есть, VB функция Choose :wink:

Sha.man
Новичок
Новичок
Аватара пользователя
 
Сообщения: 36
Зарегистрирован: 25.01.2014 (Сб) 15:05
Откуда: Краснодар

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 26.01.2014 (Вс) 10:58

наверное будет проще, если вы посоветуете мне хорошую книгу, где можно найти ответы на все мои вопросы. ведь я дилетант в этом деле. то, что мне раньше удавалось написать, делалось методом тыка и многочасовыми поисками в сети. поэтому, дабы не утомлять занятых людей множественными "как" и "почему", я прошу перенаправить меня на грамотный источник информации. какую книгу по VB6 порекомендуете?
У каждого своя истина... но каждому - своё зло!

Sha.man
Новичок
Новичок
Аватара пользователя
 
Сообщения: 36
Зарегистрирован: 25.01.2014 (Сб) 15:05
Откуда: Краснодар

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 26.01.2014 (Вс) 11:14

а для начала подскажите, как в VB6 можно заменить ту же функции =ВЫБОР() и =ЕСЛИ() из Excel? например, мне нужно, чтобы при выборе позиции 1 в комбобоксе, данные брались из одной колонки и подгружались в список для второго комбобокса, а при выборе позиции 2 - из другой колонки. если это не слишком сложно... т.е. мне нужно создать динамический список, который будет меняться в зависимости от выбора контрольного значения в комбобоксе.
У каждого своя истина... но каждому - своё зло!

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение ger_kar » 26.01.2014 (Вс) 15:46

Эмулировать в VB6 работу Excel это будет нечто. Нужно вообще абстрагироваться от Excel и решать задачу другими методами. Будет и проще и эффективнее. И логика должна быть совершенно иной.

Sha.man писал(а):т.е. мне нужно создать динамический список, который будет меняться в зависимости от выбора контрольного значения в комбобоксе.
Ну так и сделай это на основе таблиц базы данных и соответствующих запросов. Более конкретно нельзя сказать, так как задача вообще не ясна.
Бороться и искать, найти и перепрятать

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Template » 26.01.2014 (Вс) 16:33

Sha.man, В случае с комбобоксами, на мой взгляд, лучше(читайте проще) извернуться через свойство listindex (vb, vba)

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение iGrok » 26.01.2014 (Вс) 17:10

Template писал(а):VB функция Choose

Упс, действительно. Ни разу не использовал. :)
А с массивами она тоже работает, как "выбор"? Впрочем, возможно тут это совсем не важно. Без кода трудно гадать.
label:
cli
jmp label

Sha.man
Новичок
Новичок
Аватара пользователя
 
Сообщения: 36
Зарегистрирован: 25.01.2014 (Сб) 15:05
Откуда: Краснодар

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 26.01.2014 (Вс) 18:07

ger_kar писал(а):Эмулировать в VB6 работу Excel это будет нечто. Нужно вообще абстрагироваться от Excel и решать задачу другими методами.

а кто сказал, что я хочу эмулировать? я всего лишь хочу получить тот же результат, что и в Excel - только и всего! а каким путём это достичь - мне всё равно.
ger_kar писал(а):Ну так и сделай это на основе таблиц базы данных и соответствующих запросов.

да я бы рад, но не знаю как! поэтому и спрашиваю: где можно почитать? я-то, конечно, и сам найду, но думал, что народ тут подскажет хороший, проверенный источник для получения знаний. :)
У каждого своя истина... но каждому - своё зло!

Sha.man
Новичок
Новичок
Аватара пользователя
 
Сообщения: 36
Зарегистрирован: 25.01.2014 (Сб) 15:05
Откуда: Краснодар

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 26.01.2014 (Вс) 18:11

если в Excel для меня всё более или менее понятно, то в VB - тёмный лес. там просто: есть таблица, в ней столбцы и строки. указываешь оператору откуда бать данные и куда их поместить. всё привычно! здесь, думаю, это ещё проще, но для меня незнакомо! как указать тому же ComboBox откуда брать данные для списка? где эти данные записаны? вот что важно на первых порах!
У каждого своя истина... но каждому - своё зло!

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение alex77755 » 26.01.2014 (Вс) 23:37

который работает с прайс-листом

Ну если у тебя все данные на одном листе (надеюсь там нет объединённых ячеек - это зло), то первое, что тебе поможет это массивы.
Потом, возможно, словари. Считываешь прайс в массив и работаешь с ним.(массив та же таблица сномерами строк и столбцов)
Но никто не запрещает получать данные и запросами даже из книги Ексел

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение alex77755 » 26.01.2014 (Вс) 23:41

запросы к ексел
Вложения
Использование ADO с данными Excel из Visual Basic или VBA.rar
(274.87 Кб) Скачиваний: 167

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение alex77755 » 26.01.2014 (Вс) 23:55

Считать в массив можно так:
Код: Выделить всё
Dim Ex As Object, WB As Object, M()
Set Ex = CreateObject("Excel.Application")
Set WB = Ex.Workbooks.Open(App.Path & "\x.xls")
M = WB.Worksheets(1).UsedRange.Value
WB.Close
Set Ex = Nothing

Sha.man
Новичок
Новичок
Аватара пользователя
 
Сообщения: 36
Зарегистрирован: 25.01.2014 (Сб) 15:05
Откуда: Краснодар

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 27.01.2014 (Пн) 0:16

Ну, что же, кое-чему я уже научился - назначать статический список для Combo. :cheers:
А вот как создать динамический список? Т.е. при выборе разных вариантов в Combo1 должны формироваться разные списки для Combo2.

Код: Выделить всё
Private Sub Form_Load()
'Формирование списка показа в окне выбора Типа материалов
Combo1.AddItem "баннер"
Combo1.AddItem "ceткa"
Combo1.AddItem "бyмaгa"
Combo1.AddItem "пленка"
Combo1.AddItem "пластик"
End Sub

Private Sub Combo1_Change()
'Формирование списка показа в окне выбора Вида материалов
'Здесь должно в силу вступать условие IF: если выбор "баннер", то должны добавиться значения "330", "440", "510", "550", "транслюцентный",
'если "пленка", то - "глянцевая", "матовая", "прозрачная", "перфорированная", и т.д....
End Sub
У каждого своя истина... но каждому - своё зло!

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение ger_kar » 27.01.2014 (Пн) 6:47

Sha.man писал(а):да я бы рад, но не знаю как! поэтому и спрашиваю: где можно почитать? я-то, конечно, и сам найду, но думал, что народ тут подскажет хороший, проверенный источник для получения знаний.
Ну тут видишь ли нет такого определенного источника, прочитав который можно сразу прозреть и всему научится, как правило знания получаются по крупицам и из разных источников. Например чтобы нормально работать с базами данных нужно помимо самого VB как такового знать еще кучу всего. Например нужно будет изучить язык SQL и одну из технологий доступа к данным DAO, либо ADO. Лучше конечно сразу ADO. Кроме общих знаний языка SQL необходимо будет изучить особенности взаимодействия с конкретной СУБД, ибо в работе с различными СУБД имеются существенные различия. Далее даже зная все эти вещи, но не имея представления о проектировании баз данных ничего путнего сразу не создашь. Ну конечно простейшие вещи написать можно, но более менее что то серьёзное создать будет уже проблематично. И тут уже у каждого свой путь. В т.ч. и путем набивания шишек. Так как просто прочитать нужную книжку и сразу прозреть не получится. Даже к оформлению кода наименованиям переменных, объектов и т.д. тоже существуют разные подходы.

Что касается твоего кода, приведенного выше, то он по сути не имеет практической ценности, ибо все очень жестко вшито в код. Любое изменение данных будет приводить к переделке приложения и его перекомпиляции, что есть неправильно. Если например будешь работать с массивами, то кроме самой обработки данных нужно предусмотреть и такие вещи, как загрузку данных в массив и сохранение результатов в нужное место и в определенном формате.

А вообще конечно судя по твоему коду уже начали проклевываться контуры задачи. Например если бы это было решение на основе базы данных, то как минимум это уже были бы таблицы с наименованием изделия, типом (банер, сетка и т.д.), к типу можно было привязать набор и тип характеристик (это еще две таблицы), таблицу с ценами (а иначе какой же это прайс :) ). Потом уже спроектировать интерфейс для заполнения всего этого хозяйства. Например тоже же комбобокс заполнять списком значений из таблицы или запроса. Если это не одна операция и заполняются разные комбобоксы, то можно код заполнения можно вынести в отдельную процедуру. Для заполнения из таблицы она может быть например такой:
Код: Выделить всё
Public Sub FillCombo(oComboBox As Control, oConnection As ADODB.Connection, sTable As String, sField As String)
   
    '#[in] oComboBox                'Объектная ссылка на контрол, который нужно заполнить
    '#[in] oConnection              'Активное подключение к базе данных
    '#[in] sTable                   'Таблица и
    '#[in] sField                   'поле таблицы из которых берется список для заполнения
    Dim oRS As ADODB.Recordset      'Временный рекордсет открываемый на время заполнения
   
    On Error Resume Next
   
    Set oRS = New ADODB.Recordset
   
        With oRS
            .CursorLocation = adUseClient
            .LockType = adLockReadOnly
            .CursorType = adOpenForwardOnly
            .Open sTable, oConnection
                If Not (oRS.BOF Or oRS.EOF) Then
                    Do Until oRS.EOF
                        oComboBox.AddItem .Fields(sField).Value
                        oRS.MoveNext
                    Loop
                End If
            .Close
        End With
   
    Set oRS = Nothing
   
End Sub
Бороться и искать, найти и перепрятать

Sha.man
Новичок
Новичок
Аватара пользователя
 
Сообщения: 36
Зарегистрирован: 25.01.2014 (Сб) 15:05
Откуда: Краснодар

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 27.01.2014 (Пн) 8:09

ger_kar писал(а):Ну тут видишь ли нет такого определенного источника, прочитав который можно сразу прозреть и всему научится, как правило знания получаются по крупицам и из разных источников.

Спасибо, конечно, за лекцию, но за 43 года жизни я это прекрасно понял. Речь не идёт о прозрении и всезнании, а всего лишь о грамотно написанной книге для чайников, желательно с примерами, где можно было бы получить информацию.
ger_kar писал(а):Например нужно будет изучить язык SQL и одну из технологий доступа к данным DAO, либо ADO. Лучше конечно сразу ADO. Кроме общих знаний языка SQL необходимо будет изучить особенности взаимодействия с конкретной СУБД, ибо в работе с различными СУБД имеются существенные различия.

Я, конечно, не оспариваю ценность этих знаний, но, так как не ставлю своей целью работать программистом, считаю необязательным изучение ВСЕХ премудростей. Моя цель на данный момент: создать удобный калькулятор для расчёта заказов, которые я ежедневно обрабатываю на работе, дабы облегчить себе рутину и сократить время ожидания заказчиков. Если же при разработке моего калькулятора потребуется изучение ADO, SQL и СУБД, то, значит, буду изучать и их.
ger_kar писал(а):Любое изменение данных будет приводить к переделке приложения и его перекомпиляции, что есть неправильно.

С этим абсолютно согласен! Просто пока не знаю, как сделать это по-другому - поделился тем, чего смог добиться сам.
А за код огромное спасибо! Сегодня попробую, как он работает, разберу по частям и попробую понять.
У каждого своя истина... но каждому - своё зло!

Sha.man
Новичок
Новичок
Аватара пользователя
 
Сообщения: 36
Зарегистрирован: 25.01.2014 (Сб) 15:05
Откуда: Краснодар

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 27.01.2014 (Пн) 12:09

Да, видать мне ещё рановато иметь дело с такими сложными кодами... Я так и не понял, куда его вставлять, чтобы он работал. Может есть более простые методы? Создать какую-нибудь базу данных, к которой будет обращаться комбо?
У каждого своя истина... но каждому - своё зло!

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение alex77755 » 29.01.2014 (Ср) 8:08

Если всё фиксировано, то можно и просто кодом заполнить не подключаясь ни к каким базам

Код: Выделить всё
Private Sub Form_Load()
'Формирование списка показа в окне выбора Типа материалов
Combo1.AddItem "баннер" ' 0
Combo1.AddItem "ceткa" ' 1
Combo1.AddItem "бyмaгa" ' 2
Combo1.AddItem "пленка" ' 3
Combo1.AddItem "пластик" ' 4
End Sub

Private Sub Combo1_Click()
Combo2.Clear
Select Case Combo1.ListIndex
Case 0
    Combo2.AddItem 330
    Combo2.AddItem 440
    Combo2.AddItem 510
    Combo2.AddItem "транслюцентный"
Case 1

Case 2
Case 3
    Combo2.AddItem "глянцевая"
    Combo2.AddItem "матовая"
    Combo2.AddItem "прозрачная"
    Combo2.AddItem "перфорированная"
Case 4
End Select
End Sub

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение alex77755 » 29.01.2014 (Ср) 8:11

Небольшие фиксированные списки можно хранить и в ресурсах.

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение alex77755 » 29.01.2014 (Ср) 8:16

Если списки комбей могут меняться, то, в принципе, ничто не мешает держать эти списки в простых текстовых файлах рядом с программой.
Редактировать их можно не перекомпилируя программу, а просто блокнотом.
А программка будет их считывать

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение alex77755 » 29.01.2014 (Ср) 8:18

Считать в массив список можно одной строкой:
Код: Выделить всё
a=Split(CreateObject("Scripting.FileSystemObject").Getfile(Name).OpenasTextStream(1).ReadAll, vbNewLine)

В Name путь к файлу

Sha.man
Новичок
Новичок
Аватара пользователя
 
Сообщения: 36
Зарегистрирован: 25.01.2014 (Сб) 15:05
Откуда: Краснодар

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 30.01.2014 (Чт) 0:18

alex77755 писал(а):Если всё фиксировано, то можно и просто кодом заполнить не подключаясь ни к каким базам

Думаю, что всё-таки списки иногда придётся обновлять, так как все материалы привязаны к прайсу, к тому же и ширины материалов в наличии бывают разные. Но за код спасибо. Таким способом я уже научился заполнять комбо. Теперь бы научиться этому из других источников...
alex77755 писал(а):Если списки комбей могут меняться, то, в принципе, ничто не мешает держать эти списки в простых текстовых файлах рядом с программой.

А вот это уже интересно! Для каждого комбо нужен будет отдельный тхт файл? И можно ли таким образом будет сделать динамический список для комбо, которые зависимы от выбора значения в других? Например, в первом комбо я выбираю баннер, а во втором заполняется список: 330,440,550 и т.д. Если в первом - плёнка, то во втором: глянцевая, матовая, прозрачная, ... Так получится?
У каждого своя истина... но каждому - своё зло!

Sha.man
Новичок
Новичок
Аватара пользователя
 
Сообщения: 36
Зарегистрирован: 25.01.2014 (Сб) 15:05
Откуда: Краснодар

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 30.01.2014 (Чт) 0:23

Я, пока суть да дело, пробую изучать БД в Access и SQL запросы, но чувствую, что встряну надолго... А хотелось бы поскорее, поэтому интересует путь достижения попроще. Пусть потом источник данных, тот же тхт файл, придётся редактировать более сложно, чем таблицу Access, но, если это позволит делать то, о чём писалось выше, меня это устроит. В конце концов прайс обновляется не каждый день и даже не каждый месяц. А вот считать приходится каждый день и помногу, поэтому не хотелось бы затягивать разработку калькулятора надолго. Внешний вид со всеми элементами управления уже готов. Теперь нужно написать код и привязать его к ним.
У каждого своя истина... но каждому - своё зло!

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение ger_kar » 30.01.2014 (Чт) 10:38

alex77755 писал(а):Если списки комбей могут меняться, то, в принципе, ничто не мешает держать эти списки в простых текстовых файлах рядом с программой.Редактировать их можно не перекомпилируя программу, а просто блокнотом.А программка будет их считывать
Оно то конечно можно, но по сути, что делать с хранением в текстовых файлах, что с хранением в базе данных, трудозатраты на составление программы будут примерно одинаковыми, но хранение в базе данных обладает рядом преимуществ. Это и контроль вводимых значений, это и сортировка с группировкой, поддержание целостности данных и т.д. И результаты расчетов можно тут же сохранить и вести их историю, да и еще много чего можно сделать. По началу может показаться, что быстрее сделать с хранением в простых текстовых файлах, но когда захочется сделать нечто большее окажется, что реализация с хранением в текстовых файлах окажется более трудоемкой, запутанной и замороченной.
Кроме хранения информации в текстовых файлах или базе данных, можно сделать и чисто объектную модель с хранением данных объектов в бинарных файлах.
Бороться и искать, найти и перепрятать

alex77755
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 97
Зарегистрирован: 24.03.2009 (Вт) 11:40

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение alex77755 » 31.01.2014 (Пт) 10:37

ger_kar писал(а): но хранение в базе данных обладает рядом преимуществ. Это и контроль вводимых значений, это и сортировка с группировкой, поддержание целостности данных и т.д. И результаты расчетов можно тут же сохранить и вести их историю, да и еще много чего можно сделать.

Я уже на пенсии, но до сих помню нашего преподавателя автоматики, когда я защищал курсовую.
Нужно было выбрать средства автоматики конвейерных линий. Я выбрал самую простую мотивируя тем, что она обеспечивает выполнение всех заявленных требований.
А зачем брать слжную автоматику если функции ктоторые она может выполнять никому не нужны. Но для её облуживания потребуются специалисты более высокого уровня. Да и затраты на приобретение и обслуживание намного больше. Препод сказал, что подход правильный.
Можно и белазе за хлебушком смотаться, а можно и на велике. Но на белазе лучше: У него и проходимость лучше. И грузоподьёмность.
Моё кредо такое: Выбирать минимальные средства обеспечивающие заданные требования.
И в данном случае считаю текстовик вполне приемлимым средством. К которому, кстати, вполне можно слепить запрос с фильтром для заполнения второго комбика по фильтру первого
А можно и без запроса считать всё в массив, а в комбик выводить в цикле с проверкой.
Если бы это была серьёзная база, то вопросов нет, а 4-5 записей проще обойтись без тяжелой артилерии

Sha.man
Новичок
Новичок
Аватара пользователя
 
Сообщения: 36
Зарегистрирован: 25.01.2014 (Сб) 15:05
Откуда: Краснодар

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение Sha.man » 31.01.2014 (Пт) 12:48

alex77755 писал(а):Если бы это была серьёзная база, то вопросов нет, а 4-5 записей проще обойтись без тяжелой артилерии

Абсолютно согласен! Большой базы там и не будет. И частых смены/добавления позиций - тоже. Поэтому меня вполне устроит велосипед. :D
Значит буду искать способ всё делать через тхт файлы с фильтрацией. Надо только сначала разобраться, как это делается... :roll:
У каждого своя истина... но каждому - своё зло!

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как создать *.exe в VB6 из проекта VBA?

Сообщение ger_kar » 31.01.2014 (Пт) 19:10

Sha.man писал(а):Можно и белазе за хлебушком смотаться, а можно и на велике. Но на белазе лучше: У него и проходимость лучше. И грузоподьёмность.
Ну вообще в наше время с проблемами парковки и пробками лучше и быстрее всего как раз на велике, а если учесть, что для поездки не надо тратится на бензин, а сама поездка очень полезна для здоровья, то тогда вообще велик - лучший транспорт :) . Но это так лирическое отступление.
alex77755 писал(а):Моё кредо такое: Выбирать минимальные средства обеспечивающие заданные требования.
А у меня - использовать принцип разумной достаточности. :)
Поэтому если бы я предложил установить серверную базу данных, что-то типа MS SQL или ORACLE, да еще и на выделенном сервере, то это-бы и был "Белаз" в вашей интерпретации. Я же предлагаю как раз велик, причем не просто велик, а велик с возможностью совершенствования. Сегодня эта например база с парой таблиц, а может через год их уже будет с десяток. А использование в качестве ядра СУБД MS JET c хранением в файле .mdb (Access) не требует ни дополнительных расходов, ни каких то особых настроек с администрированием. Все также предельно просто и эффективно.
alex77755 писал(а):А зачем брать слжную автоматику если функции ктоторые она может выполнять никому не нужны. Но для её облуживания потребуются специалисты более высокого уровня. Да и затраты на приобретение и обслуживание намного больше.
Вот как раз для такого случая MS JET самое то. А вся автоматика реализуется на уровне приложения ровно в том объеме, который будет нужен на данный момент и возможность роста (то бишь возможность наворотить велик) сохраняется и затрат нет.
Сегодня пара таблиц с несколькими записями, а через месяц захочется уже не просто считать, а и результаты работы сохранять, а там дальше дело и до автоматических отчетов о проделанной работы дойдет. Я бы для себя именно так и сделал. Поэтому и рассуждаю в данном направлении :) .
Бороться и искать, найти и перепрятать

След.

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

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

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

    TopList  
cron