Помогите выбрать формат хранения в БД

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Daniil
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 13.03.2004 (Сб) 19:55
Откуда: Нижний Новгород

Помогите выбрать формат хранения в БД

Сообщение Daniil » 13.07.2005 (Ср) 23:24

Вот есть такая программа, задумка которой http://bbs.vbstreets.ru/viewtopic.php?t=17485

В приложении к этому посту публикую что есть (макет проги) и как должно выглядеть при печати (изображение)

Не могу выбрать формат хранения данных то ли TXT то ли БД Microsoft Office Access

В идела, вся БД будет синхронизироваться с MySQL сервером (как загрузка, так и выгрузка)

Может кто подскажет как организовать правильное и разиональное хранение данных.
Вложения
TimeTablePro.rar
Приложение к вопросу. Тут сама прога и картинка все в раре (для ужима места)
(7.42 Кб) Скачиваний: 24
С уважением Данил. Пишите мне на Daniil_2003@mail.ru

Daniil
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 13.03.2004 (Сб) 19:55
Откуда: Нижний Новгород

описание проекта

Сообщение Daniil » 14.07.2005 (Чт) 0:31

Вот план проекта:
http://new-img.com/Plan_of_TimeTablePro.pdf
С уважением Данил. Пишите мне на Daniil_2003@mail.ru

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Re: Помогите выбрать формат хранения в БД

Сообщение Sedge » 14.07.2005 (Чт) 9:27

Daniil писал(а):В идела, вся БД будет синхронизироваться с MySQL сервером (как загрузка, так и выгрузка)

Daniil писал(а):Может кто подскажет как организовать правильное и разиональное хранение данных.

MySql

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

Сообщение Ennor » 14.07.2005 (Чт) 10:12

Да уж, не городи огород. Связался с одним сервером - ну так и делай все на нем. Терпеть не могу эти гетерогенные системы...

Daniil
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 13.03.2004 (Сб) 19:55
Откуда: Нижний Новгород

Так нет!

Сообщение Daniil » 14.07.2005 (Чт) 11:32

Да уж, не городи огород. Связался с одним сервером - ну так и делай все на нем. Терпеть не могу эти гетерогенные системы...


Так дело в том, что БД только обновляется с MySQL, но она должна еще работать в офф-лайне! А для этого все эти данные еще должны храниться на харде. Не так ли? ;-)

Sedge
MySql


Ну это на сервере - понятно что в MySql
а на хар де-то в каких файлах?
С уважением Данил. Пишите мне на Daniil_2003@mail.ru

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 14.07.2005 (Чт) 12:16

А Мускул в оффлайне уже не работает?

Daniil писал(а):Ну это на сервере - понятно что в MySql
а на хар де-то в каких файлах?


В БД Мускула.

Или что тебе нужно???
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Daniil
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 13.03.2004 (Сб) 19:55
Откуда: Нижний Новгород

Сообщение Daniil » 14.07.2005 (Чт) 13:00

Igor_123 писал(а):А Мускул в оффлайне уже не работает?

Daniil писал(а):Ну это на сервере - понятно что в MySql
а на хар де-то в каких файлах?


В БД Мускула.

Или что тебе нужно???



а как? если бы я знал, то не спрашивал.
Подскажи пожалуйста.
С уважением Данил. Пишите мне на Daniil_2003@mail.ru

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.07.2005 (Чт) 13:04

Используй Access. ADO тебе по любому таскать, так что на размер дистрибутива это не влияет.
Lasciate ogni speranza, voi ch'entrate.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 14.07.2005 (Чт) 13:36

Daniil
У тебя есть сервер на котором под Мускулом есть БД.
У тебя задача:БД на сервере синхронизировать с локальной БД в обоих направлениях.
Твой вопрос: Как решить задачу.

Я правильно понял???
Если да, то предлагали два варианта:
1 - ставь локально мускул и организовывай копию веб-базы. И механизмы репликации.
2 - бери Акцесс(по мне так любую СУБД, желательно ту, в которой больше разбираешься) и организовывай копию веб-базы и механизм репликации.
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

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

Сообщение Ennor » 14.07.2005 (Чт) 14:08

В таком случае тебе нужно то, что называется "репликация слиянием" (merge replication). Ох и умаешься ты с ней...

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 14.07.2005 (Чт) 15:03

Ennor
Это не обязательно то, "что нужно заказчику" (с)
Это как я понял его проблему.

Ennor писал(а):Ох и умаешься ты с ней...

Ничего сказать не могу, на практике не делал. Только теоретические размышления. :( Но выглядят очень заманчиво и если понадобиться такое реализовывать, то в первую очередь попробую этот вариант. Посмотрю на грабли изнутри :D
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.07.2005 (Чт) 15:08

Лучше поверь ему :)
Правильная репликация -- дело довольно кропотливое и нудное.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 14.07.2005 (Чт) 15:35

А нужна ли репликация - об ней вопрос не стоял.

Так я из базы SQL периодически формирую урезанную mdb-шку, которую потом вместе с программой пишу на диск для клиентов. Возможно так человеку и надо.

Другой вариант (это если можно без программы) - формировать chm-файл.
Таким образом у нас отдаются прайс-листы, к примеру (туда же можно включать и прочую справочную информацию, фотографии и пр.). Тоже удобно. В результате клиент получает файл который откроется на любой машине с Windows и имеющий хорошую систему поиска.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение Ennor » 14.07.2005 (Чт) 15:54

Andrey Fedorov писал(а):Так я из базы SQL периодически формирую урезанную mdb-шку, которую потом вместе с программой пишу на диск для клиентов. Возможно так человеку и надо.

Ну да, та же репликация, только реализованная полностью вручную. После того, как я убил 2 недели, чтобы разобраться в дуркующей необновляемой транзакционке (http://www.sql.ru/forum/actualthread.aspx?tid=193158), я с ужасом думаю о поднятии мёрджа на какой бы то ни было платформе...

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 14.07.2005 (Чт) 16:14

Товарищи термин репликация, я предложил как название механизма который будет синхронизировать две БД, как, на мой взгляд, наиболее подходящий в моем понимании задачи.

alibek :D я верю Ennor и ничуть не сомневаюсь, что простая на первый взгляд задача провести репликацию данных, при реализации оказываеться далеко нетривиальной.
И полностью согласен с подписью уважаемого Ennor
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 14.07.2005 (Чт) 16:26

Ennor писал(а):Ну да, та же репликация, только реализованная полностью вручную.


Да никакой репликации нет в помине - просто создается mdb-шка, в ней создаются таблички, в которые скидываются данные. Все на автомате и достаточно примитивно. Дальнейшей синхронизации с основной базой совершенно не требуется - просто юзеру дается диск с новой версией программы и данных. Так что тут все просто.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Daniil
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 13.03.2004 (Сб) 19:55
Откуда: Нижний Новгород

Сообщение Daniil » 14.07.2005 (Чт) 18:30

Так я из базы SQL периодически формирую урезанную mdb-шку, которую потом вместе с программой пишу на диск для клиентов. Возможно так человеку и надо.


Вот, это похоже что надо! Примерчика у вас нет?

Другой вариант (это если можно без программы) - формировать chm-файл.


СУПЕР! намного легче! а php можно компилировать разве в chm-файл?
С уважением Данил. Пишите мне на Daniil_2003@mail.ru

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 15.07.2005 (Пт) 7:51

Daniil писал(а):Вот, это похоже что надо! Примерчика у вас нет?


Чего именно примерчика?

Ну вот, к примеру, примерчик копирования таблички из одной задачки:

Код: Выделить всё
Private Sub CopyTable(cat As ADOX.Catalog, cas As ADOX.Catalog, TableName As String, rSrc As ADODB.Recordset, Optional bSQL As Boolean = False)
    Const sAZL As String = "Jet OLEDB:Allow Zero Length"
    Dim t As ADOX.Table, tt As ADOX.Table, c As ADOX.Column, cc As ADOX.Column, _
        iDst As ADOX.Index, iSrc As ADOX.Index, v As Variant, i As Long, _
        rDst As New ADODB.Recordset, f As ADODB.Field, b As Boolean, s As String
   
    If bSQL Then
        Set tt = New ADOX.Table
        tt.Name = TableName
        For Each f In rSrc.Fields
            Set cc = New ADOX.Column
            cc.Name = f.Name
            Select Case f.Type
                Case adVarWChar, adVarChar
                    If f.DefinedSize <= 255 Then
                        cc.Type = adVarWChar
                        cc.DefinedSize = f.DefinedSize
                    Else
                        cc.Type = adLongVarWChar
                    End If
                Case adDBTimeStamp
                    cc.Type = adDate
                Case adLongVarChar
                    cc.Type = adLongVarWChar
                Case adChar, adWChar
                    cc.Type = adVarWChar
                    cc.DefinedSize = f.DefinedSize
                Case adBoolean
                    cc.Type = adSmallInt
                Case Else
                    cc.Type = f.Type
            End Select
            cc.Attributes = IIf(f.Attributes And adFldIsNullable, adColNullable, adColFixed)
            tt.Columns.Append cc
        Next f
        cat.Tables.Append tt
    Else
        Set t = cas.Tables(TableName)
        Set tt = New ADOX.Table
        tt.Name = t.Name
        For Each c In t.Columns
            b = False: s = c.Name
            For Each f In rSrc.Fields
                If f.Name = s Then b = True: Exit For
            Next f
            If b Then
                Set cc = New ADOX.Column
                cc.Name = c.Name
                Select Case c.Type
                    Case adVarWChar, adVarChar
                        If c.DefinedSize <= 255 Then
                            cc.Type = adVarWChar
                            cc.DefinedSize = c.DefinedSize
                        Else
                            cc.Type = adLongVarWChar
                        End If
                    Case adDBTimeStamp
                        cc.Type = adDate
                    Case adLongVarChar
                        cc.Type = adLongVarWChar
                    Case adChar, adWChar
                        cc.Type = adVarWChar
                        cc.DefinedSize = c.DefinedSize
                    Case Else
                        cc.Type = c.Type
                End Select
                cc.Attributes = c.Attributes
                tt.Columns.Append cc
            End If
        Next c
        cat.Tables.Append tt
   
        ' Copy Indexes
        For Each iSrc In t.Indexes
            If iSrc.PrimaryKey Then
                Set iDst = New ADOX.Index
                iDst.Name = iSrc.Name
                iDst.PrimaryKey = iSrc.PrimaryKey
                iDst.Unique = iSrc.Unique
                For Each c In iSrc.Columns
                    iDst.Columns.Append c.Name
                Next c
                tt.Indexes.Append iDst
            End If
        Next iSrc
    End If

    For Each cc In tt.Columns
        Select Case cc.Type
            Case adVarWChar, adVarWChar, adLongVarWChar, adLongVarChar
                cc.Properties(sAZL) = False
        End Select
    Next cc
   
    ' Copy Data
    rDst.Open "SELECT * FROM [" & TableName & "]", cat.ActiveConnection, adOpenStatic, adLockOptimistic
    Do Until rSrc.EOF
        rDst.AddNew
        For Each f In rSrc.Fields
            If Len(Nz(f, "")) > 0 Then rDst.Fields(f.Name) = f
        Next f
        rDst.Update
        rSrc.MoveNext
    Loop
    rSrc.Close: rDst.Close
End Sub


Другой вариант (это если можно без программы) - формировать chm-файл.


СУПЕР! намного легче! а php можно компилировать разве в chm-файл?[/quote]

А зачем php-то там?
[/syntax]
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Daniil
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 13.03.2004 (Сб) 19:55
Откуда: Нижний Новгород

Сообщение Daniil » 15.07.2005 (Пт) 13:21

А зачем php-то там?


А как же обработать запрос из БД MySQL если не средствами php?
С уважением Данил. Пишите мне на Daniil_2003@mail.ru

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 15.07.2005 (Пт) 15:51

Daniil, читаю и никак не могу въехать в логику твоего приложения. Я, в принципе, понимаю что ты хочешь сделать, но не совсем понимаю - зачем. Может объяснишь по-подробнее?

Daniil
Обычный пользователь
Обычный пользователь
 
Сообщения: 68
Зарегистрирован: 13.03.2004 (Сб) 19:55
Откуда: Нижний Новгород

Сообщение Daniil » 16.07.2005 (Сб) 0:20

Sedge
что бы вся грпуппа скачивала обновления
С уважением Данил. Пишите мне на Daniil_2003@mail.ru


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

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

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

    TopList  
cron