|
Создание базы данных
p align="left">Для построения диаграмм выберите Результаты>Мастер диаграмм. Диаграммы можно строить только по полям числового типа. Для сохранения БД в гипертекстовом формате воспользуйтесь пунктом меню Результаты>Формирование HTML. Достаточно указать путь к файлу и заголовок таблицы. Для установки защиты выберите Настройки>Защита. Условием защиты по паролю является наличие произвольного, отличного от пробелов текста в поле ввода пароля. Если поле пусто никакие настройки не учитываются. Для получения справки выберите? >Помощь. 3.2.3. Сообщения оператору (рис.12, рис.13, рис.14) Мастер диаграмм: Нельзя строить диаграмму по нечисловым данным! (попытка строить диаграмму по строковым значениям) Редактор записей: Восстановить поля из БД? Поля были восстановлены! Для редактирования чисел редактор не используется. (редактор предназначен лишь для удобства редактирования многострочного текста) Сохранить поля в БД? Поля были сохранены в БД! Изменённое поле перекрывает уже существующее! Измените данные. (измененное поле стало эквивалентно другому полю, либо не было внесено изменений в данные) Числовое значение превышает разрядную сетку! (введено целое число, большее по модулю 2147483647) Значение не является целым числом! (введено значение, не являющееся целым числом либо 0) Строка пуста. Продолжить? (измененная строка пуста) Мастер запросов: Запрос отменен! Список запросов не пуст. Выйти? (были созданы и не выполнены запросы) Очистить список запросов? Удалить выбранный запрос из списка? Запросы выполнены. Выводить в новую таблицу? Нет для вывода в уже существующую. (запрос может выводить результат либо в уже существующую таблицу, дописывая в конец, либо создать новую) Не задано относительное значение! (для выполнения запроса недостаточно данных) Ошибка в запросе! (произошла ошибка во время интерпретации или выполнения запроса) Добавляемое поле уже существует! Добавляемый столбец дублируется! Нельзя добавлять записи в БД без полей! (запись добавляется, а полей в БД еще нет) В БД нет полей! В БД нет записей! Нечего сортировать! (вызвана сортировка пустой БД) Не с чем сравнивать! (сравнения по пустой БД) Эквивалентом вывода целочисленного столбца не является целое число! Условие всегда истинно! (в запросе вывода указано строковое значение, а вывод идет по числовому полю) Добавляемая запись уже существует! Поле строкового типа преобразуется в числовой тип. Все нечисловые значения будут преобразованы в 0. Продолжить? (при изменении типа поля из строкового в числовое все строки, которые нельзя преобразовать в целые числа, будут заменены 0). Поле с названием XXX уже существует! Окно настроек создаваемого поля: Введенное значение не является целым числом. Преобразовано к '0'. Главное окно: Недостаточно прав для выполнения действия! (открыта БД, защищенная паролем, в режиме чтения и производится попытка изменения данных) Ошибка удаления столбца! Удалить столбец? Ошибка удаления записи! Удалить запись? БД сохранена! БД повреждена! (при загрузке БД произошла ошибка) Пароль принят! (БД, защищенная паролем, открыта с корректно введенным паролем) Только чтение! (БД, защищенная паролем, открыта в режиме чтения) Пароль не принят! Доступ запрещён! БД загружена! БД создана с настройками по-умолчанию! литератураMicrosoft Corporation Microsoft Visual Basic 6.0 Programmer's Guide, Microsoft Press, 2003 г. Microsoft® Win32® Programmer's Reference, 1996 г. Приложение 1Исходный код программыФорма: MainForm. frm0' разница ширины и высоты формы и TabStrip'а1Dim dW1%, dH1%2' разница ширины и высоты TabStrip'а и ListView'а3Dim dW2%, dH2%4' последний выбранный элемент5Dim saveItemIndex%6' текущая таблица7Public DBCurIndex%8' последний Image, над которым был курсор9Dim OldImageIndex%1011Private Sub AboutProg_Click() 12 CoolTimer. Enabled = False13 AboutForm. Show vbModal14 CoolTimer. Enabled = True15End Sub1617Private Sub CloseDB_Click() 18 CoolTimer. Enabled = False19 20 If DBChanged Then21 If (MsgForm. QuestMsg("В БД внесены не сохранённые изменения. Закрыть не сохраняя? ") <> resOk) Then GoTo exit_22 End If23 24 SB. Panels(3). Text = ""25 Call ClearAll26 Call ShowTable(-1) 27 Call DisEnImage(2, 1) 28 Call DisEnImage(3, 1) 29 Call DisEnImage(4, 1) 30 31exit_: 3233 CoolTimer. Enabled = True34End Sub3536' index,mode / сегмент, смещение37Sub DisEnImage(Index%, Mode%) 38 CoolBut(Index). Picture = CoolImgs. ListImages(1 + (Index * 3 + Mode)). Picture39 CoolBut(Index). Enabled = (Mode <> 1) 40End Sub4142Sub RetImage() 43 If (OldImageIndex > - 1) Then44 If CoolBut(OldImageIndex). Enabled Then45 Call DisEnImage(OldImageIndex, 0) 46 Else47 Call DisEnImage(OldImageIndex, 1) 48 End If49 End If50 OldImageIndex = - 151End Sub5253Sub CoolMouseMove(Index%) 54 If (Index = OldImageIndex) Then Exit Sub55 Call DisEnImage(Index, 2) 56 Call RetImage57 OldImageIndex = Index58End Sub5960Private Sub CoolBut_Click(Index As Integer) 61 Call DisEnImage(Index, 0) 62 Select Case Index63 Case 0: Call CreateDB_Click64 Case 1: Call OpenDB_Click65 Case 2: Call SaveDB_Click66 Case 3: Call CloseDB_Click67 Case 4: Call ResCopyDB_Click68 Case 5: Call ExitPr_Click69 End Select70End Sub7172Private Sub CoolTimer_Timer() 73 Dim Point As POINTAPI74 Dim R As RECT, R2 As RECT75 Call GetCursorPos(Point) 76 Call GetWindowRect(Frame1. hwnd, R) 77 For i% = 0 To 578 If (Not CoolBut(i). Enabled) Then GoTo loop_79 x% = R. Left + CoolBut(i). Left / Screen. TwipsPerPixelX80 y% = R. Top + CoolBut(i). Top / Screen. TwipsPerPixelY81 X2% = x + CoolBut(i). Width / Screen. TwipsPerPixelX82 Y2% = y + CoolBut(i). Height / Screen. TwipsPerPixelY83 R2. Left = x84 R2. Top = y85 R2. Right = X286 R2. Bottom = Y287 If ((Point. x >= R2. Left) And (Point. x <= R2. Right) And (Point. y >= R2. Top) And (Point. y <= R2. Bottom)) Then88 Call CoolMouseMove(i) 89 Exit Sub90 End If91loop_: 92 Next i93 Call RetImage94End Sub9596Private Sub CreateDB_Click() 97 CoolTimer. Enabled = False98 Dlgs. FileName = ""99 Dlgs. ShowSave100 If (Dlgs. FileName <> "") Then101 ' создаю новую БД102 Call NewDB(Dlgs. FileName) 103 ' вывожу путь к БД104 SB. Panels(3). Text = DBPath105 ' разрешения106 Call DisEnImage(2, 0) 107 Call DisEnImage(3, 0) 108 Call DisEnImage(4, 0) 109 Call ShowTable(DBCurIndex) 110 End If111 CoolTimer. Enabled = True112End Sub113114Private Sub DiagDraw_Click() 115 CoolTimer. Enabled = False116 DiagMasterForm. Show vbModal117 CoolTimer. Enabled = True118End Sub119120Private Sub ExitBut_Click() 121 Call ExitPr_Click122End Sub123124Private Sub ExitPr_Click() 125 CoolTimer. Enabled = False126 If Not DBChanged Then127 End128 Else129 If (MsgForm. QuestMsg("В БД внесены не сохранённые изменения. Выйти не сохраняя? ") = resOk) Then End130 End If131 CoolTimer. Enabled = True132End Sub133134Private Sub File_Click() 135 SaveDB. Enabled = DBPath <> ""136 CloseDB. Enabled = SaveDB. Enabled137 ResCopyDB. Enabled = SaveDB. Enabled138End Sub139140Private Sub HelpProg_Click() 141 CoolTimer. Enabled = False142 Call ShellExecute(hwnd, "open", "Help\index. html", "", "", 0) 143 CoolTimer. Enabled = True144End Sub145146Sub CreateHTML(Path$) 147 Call DeleteFile(Path) 148 DBI% = FreeFile149 Open Path For Binary As DBI150 151 Capt$ = InputForm. InputVal("Введите заголовок для таблицы") 152 153 HTMLHeader$ = Replace("<html><head><meta http-equiv=~Content-Language~ content=~ru~>" + _154 "<meta http-equiv=~Content-Type~ content=~text/html; charset=windows-1251~>", "~", Chr(34)) 155156 HTMLInfo$ = "<title>" + Capt + "</title>"157 158 HTMLStart$ = Replace("</head><body><div align=~center~><table border=~1~ cellspacing=~2~ style=~border-collapse: collapse~>", "~", Chr(34)) 159160 HTMLEnd$ = "</table></div><br><br><br><hr><i>Файл сгенерирован программой DB Xtension по содержимому БД </i><b>' " + DBPath + "' </b></body></html>"161 162 HTMLCaption$ = Replace("<tr><td colspan=~" + CStr(DB(DBCurIndex). Header. ColCount) + "~ align=~center~ bgcolor=~#66CCFF~><font color=~#FFFF00~ size=~5~>" + Capt + "</font></td></tr>", "~", Chr(34)) 163164 HTMLRowS$ = "<tr>"165 HTMLRowE$ = "</tr>"166 167 If (DB(DBCurIndex). Header. ColCount > 0) Then ColWidth% = 100 \ DB(DBCurIndex). Header. ColCount168 169 HTMLCols$ = Replace("<td bgcolor=~#999999~ width=~" + CStr(ColWidth) + "%~ align=~center~><b><font face=~Arial~ color=~#FFFFFF~>^</font></b></td>", "~", Chr(34)) 170 171 HTMLCells$ = Replace("<td width=~" + CStr(ColWidth) + "%~ align=~center~>^</td>", "~", Chr(34)) 172173 Put DBI,, HTMLHeader174 Put DBI,, HTMLInfo175 176 If (DB(DBCurIndex). Header. ColCount > 0) Then177 Put DBI,, HTMLStart178 Put DBI,, HTMLCaption179 180 Put DBI,, HTMLRowS181 For c% = 0 To DB(DBCurIndex). Header. ColCount - 1182 Put DBI,, Replace(HTMLCols, "^", CStr(DB(DBCurIndex). Cols(c). title)) 183 Next c184 Put DBI,, HTMLRowE185 186 For R% = 0 To DB(DBCurIndex). Header. RowCount - 1187 Put DBI,, HTMLRowS188 For c% = 0 To DB(DBCurIndex). Header. ColCount - 1189 tmp$ = CStr(DB(DBCurIndex). Rows(R). Fields(c)) 190 If (Trim(tmp) = "") Then tmp = " "191 Put DBI,, Replace(HTMLCells, "^", tmp) 192 Next c193 Put DBI,, HTMLRowE194 Next R195 196 Put DBI,, HTMLEnd197 Else198 Put DBI,, "</head><body>База не содержит данных</body></html>"199 End If200 201 Close DBI202 203 If (MsgForm. QuestMsg("Файл '" + Path + "' создан. Открыть? ") = resOk) Then204 Call ShellExecute(hwnd, "open", Path, "", "", 0) 205 End If206End Sub207208Private Sub HTMLCreator_Click() 209 CoolTimer. Enabled = False210 HTMLPath. FileName = ""211 HTMLPath. ShowSave212 If (HTMLPath. FileName <> "") Then213 Call CreateHTML(HTMLPath. FileName) 214 Else215 Call MsgForm. ErrorMsg("Формирование HTML-документа отменено! ") 216 End If217 CoolTimer. Enabled = True218End Sub219220Private Sub ListView_DblClick() 221 If (saveItemIndex > 0) Then222 Load EditRecordForm223 With EditRecordForm224. CellList. Clear225. ERFDBIndex = DBCurIndex226 Call. LoadData(saveItemIndex - 1) 227 Call. OverloadList228. Show vbModal229 End With230 End If231End Sub232233Private Sub ListView_ItemClick(ByVal Item As MSComctlLib. ListItem) 234 saveItemIndex = Item. Index235End Sub236237Private Sub ListView_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) 238 saveItemIndex = 0239End Sub240241Private Sub OptDB_Click() 242 Security. Enabled = DBPath <> ""243End Sub244245Private Sub Form_Load() 246' регистрации расширения247 Call ShellExecute(0, "", "assoc. exe", App. Path + "\" + App. EXEName + ". exe", "", 0) 248 DBCurIndex = 0249 UserIsAdmin = True250 saveItemIndex = 0251 OldImageIndex = - 1252 Call ClearAll253 dW1 = Width - TabStrip. Width254 dH1 = Height - TabStrip. Height255 dW2 = Width - ListView. Width256 dH2 = Height - ListView. Height257 Call DisEnImage(0, 0) 258 Call DisEnImage(1, 0) 259 Call DisEnImage(2, 1) 260 Call DisEnImage(3, 1) 261 Call DisEnImage(4, 1) 262 Call DisEnImage(5, 0) 263End Sub264265Private Sub Form_Resize() 266 CoolBar1. Width = 2 * Width267268 Min% = MainForm. Width - dW2269 If (Min < 0) Then: Min = 0270 ListView. Width = Min271 272 Min = MainForm. Height - dH2273 If (Min < 0) Then: Min = 0274 ListView. Height = Min275 276 Min = MainForm. Width - dW1277 If (Min < 0) Then: Min = 0278 TabStrip. Width = Min279 280 Min = MainForm. Height - dH1281 If (Min < 0) Then: Min = 0282 TabStrip. Height = Min283End Sub284285Private Sub Form_Unload(Cancel%) 286 If DBChanged Then287 If (MsgForm. QuestMsg("Выйти? ") = resNo) Then Cancel = 1288 End If289 Close ' пожалуй, это лишнее, но да мало ли:) 290End Sub291292Private Sub OpenDB_Click() 293 CoolTimer. Enabled = False294 Dlgs. FileName = ""295 Dlgs. ShowOpen296 If (Dlgs. FileName <> "") Then297 ' открываю БД298 If LoadDB(DBCurIndex, Dlgs. FileName) Then299 ' вывожу путь к БД300 SB. Panels(3). Text = DBPath301 Call DisEnImage(2, 0) 302 Call DisEnImage(3, 0) 303 Call DisEnImage(4, 0) 304 Call ShowTable(DBCurIndex) 305 End If306 End If307 CoolTimer. Enabled = True308End Sub309310Private Sub QueryDB_Click() 311 QueryM. Enabled = DBPath <> ""312End Sub313314Private Sub ResDB_Click() 315 DiagDraw. Enabled = DBPath <> ""316 HTMLCreator. Enabled = DBPath <> ""317End Sub318319Private Sub QueryM_Click() 320 CoolTimer. Enabled = False321 With QueryMasterForm322. QMFDBIndex = DBCurIndex323. Show vbModal324 End With325 CoolTimer. Enabled = True326End Sub327328Private Sub ResCopyDB_Click() 329 CoolTimer. Enabled = False330 Dlgs. FileName = ""331 Dlgs. ShowSave332 If (Dlgs. FileName <> "") Then333 If (Dlgs. FileName = DBPath) Then334 Call MsgForm. ErrorMsg("Нельзя копировать файл сам в себя! ") 335 Else336 Call CopyFile(DBPath, Dlgs. FileName, False) 337 Call MsgForm. InfoMsg("Архивная копия БД создана. ") 338 End If339 Else340 Call MsgForm. ErrorMsg("Резервное копирование БД отменено! ") 341 End If342 CoolTimer. Enabled = True343End Sub344345Private Sub SaveDB_Click() 346 CoolTimer. Enabled = False347 Dlgs. FileName = ""348 Dlgs. ShowSave349 If (Dlgs. FileName <> "") Then350 DBPath = Dlgs. FileName351 Call FlushDB(DBCurIndex) 352 End If353 CoolTimer. Enabled = True354End Sub355356Private Sub Security_Click() 357 CoolTimer. Enabled = False358 If UserIsAdmin Then359 With PasswordForm360. SetPassText = DB(DBCurIndex). Password361 362 If (DB(DBCurIndex). Header. Flags And flCoded) Then363. CheckCoded = 1364 Else365. CheckCoded = 0366 End If367 If (DB(DBCurIndex). Header. Flags And flReadOnlyEnable) Then368. CheckNoRO = 1369 Else370. CheckNoRO = 0371 End If372. CaptionLabel = "Настройка защиты"373. TextLabel = "Вы можете изменить пароль и права доступа к данной БД. Наличие пароля предполагает ограниченный доступ. "374. Frame1. Visible = False375. Frame2. Visible = True376. Show vbModal377 If (. res) Then378 DB(DBCurIndex). Header. Flags = 0379 If (Trim(. SetPassText) <> "") Then380 DB(DBCurIndex). Password = Trim(. SetPassText) 381 DB(DBCurIndex). Header. Flags = flPasswordNeed382 Call MsgForm. InfoMsg("Был задан пароль! ") 383 End If384 DB(DBCurIndex). Header. Flags = DB(DBCurIndex). Header. Flags + (flCoded *. CheckCoded) + (flReadOnlyEnable *. CheckNoRO) 385 End If386 Unload PasswordForm387 End With388 Else389 Call ProtectedMsg390 End If391 CoolTimer. Enabled = True392End Sub393394Private Sub TabStrip_Click() 395 If (TabStrip. Tabs. Count = 0) Then Exit Sub396 If (DBCurIndex <> TabStrip. SelectedItem. Index - 1) Then397 DBCurIndex = TabStrip. SelectedItem. Index - 1398 Call ShowTable(DBCurIndex) 399End If400End Sub401402Private Sub TabStrip_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) 403 If (Shift = vbCtrlMask) Then PopupMenu TSMenu404End Sub405406Private Sub TSClose_Click() 407 If (MsgForm. QuestMsg("Закрыть закладку? ") = resOk) Then408 TabIndex% = TabStrip. SelectedItem. Index409 TabStrip. Tabs. Remove (TabIndex) 410 Call DelTable(TabIndex - 1) 411 412 If (TabStrip. Tabs. Count = 0) Then413 DBChanged = False414 Call DisEnImage(2, 1) 415 Call DisEnImage(3, 1) 416 Call DisEnImage(4, 1) 417 Call ShowTable(-1) 418 Else419 TabStrip. SelectedItem = TabStrip. Tabs. Item(1) 420 End If421 End If422End SubФорма: TableForm. frm423Dim tmp As String424425Public Function AddColDlg(DBIndex%) As String426 tmp = ""427 With StCol428. Clear429 For i% = 1 To DB(DBIndex). Header. ColCount430. AddItem DB(DBIndex). Cols(i - 1). title431 Next432. ListIndex =. ListCount - 1433 End With434 ColType. ListIndex = 0435 Me. Show vbModal436 AddColDlg = tmp437 Unload Me438End Function439440Private Sub ColType_Click() 441 ' изменение допустимых длин442 If Visible Then443 Select Case ColType. ListIndex444 Case ccInteger: InitValue. MaxLength = 4445 Case ccString: InitValue. MaxLength = 255446 End Select447 End If448449' контроль ввода450 If Visible And (ColType. ListIndex = ccInteger) Then451 If (Not IsInteger(InitValue. Text)) Then InitValue. Text = "0"452 End If453End Sub454455Private Sub CreateBut_Click() 456 Call SoundClick457 s1$ = Trim(ColTitle. Text) 458 Do While (s1 = "") 459 s1 = Trim(InputForm. InputVal("Вы не ввели заголовок столбца. Повторите ввод. ")) 460 Loop461 tmp$ = s1 + ", "462 Dim ct463 Dim s2464 Select Case ColType. ListIndex465 Case ccInteger466 t$ = Trim(InitValue. Text) 467 If (Not IsInteger(t)) Then468 Call MsgForm. InfoMsg("Введённое значение не является целым числом. Преобразовано к '0'. ") 469 t = "0"470 End If471 tmp = tmp + " " + sI + ", " + t472 Case ccString473 t$ = Trim(InitValue. Text) 474 If (t = "") Then t = " "475 tmp = tmp + " " + sS + ", " + t476 End Select477 Dim pos%478 If (OnlyEndCheck. value = 1) Then479 pos = - 1480 Else481 pos = StCol. ListIndex482 If (Option2. value = True) Then pos = pos + 1483 End If484 tmp = tmp + ", " + CStr(pos) 485 Hide486End Sub487488Private Sub CancelBut_Click() 489 Call SoundClick490 Hide491End Sub492493Private Sub Form_Load() 494 Call ButEnabled(CreateImg, CreateBut, True) 495 Call ButEnabled(CancelImg, CancelBut, True) 496End SubФорма: TextEditForm. frm497Public res%498Dim dW%, dH%499500Private Sub Form_Activate() 501 With TextEdit502. SelStart = Len(. Text) 503 End With504End Sub505506Private Sub Form_Load() 507 res = 0508 dW = Width - TextEdit. Width509 dH = Height - TextEdit. Height510End Sub511512Private Sub Form_Resize() 513 Min% = Height - dH514 If (Min <= 1000) Then: Min = 1000: Height = dH + Min515 TextEdit. Height = Min516 517 Min = Width - dW518 If (Min <= 1000) Then: Min = 1000: Width = dW + Min519 TextEdit. Width = Min520End Sub521522Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib. Button) 523 On Error Resume Next524 Select Case Button. Key525 Case "ClearText"526 TextEdit. TextRTF = ""527 Case "SaveText"528 res = 1529 Hide530 Case "CopyText"531 Clipboard. SetText (TextEdit. SelText) 532 Case "PasteText"533 TextEdit. SelText = VB. Clipboard. GetText534 Case "CutText"535 Clipboard. SetText (TextEdit. SelText) 536 TextEdit. SelText = ""537 Case "DeleteText"538 TextEdit. SelText = ""539 Case "Properties"540 On Error GoTo checkerror541 FontDlg. ShowFont542 TextEdit. Font. Name = FontDlg. FontName543 TextEdit. Font. Bold = FontDlg. FontBold544 TextEdit. Font. Italic = FontDlg. FontItalic545 TextEdit. Font. Size = FontDlg. FontSize546 TextEdit. Font. Strikethrough = FontDlg. FontStrikethru547 TextEdit. Font. Underline = FontDlg. FontUnderline548 Exit Sub549checkerror: 550 MsgBox "error"551 End Select552End Sub553Форма: SelectForm. frm554Dim tmp%, tmps$555556Public Function SelectDlg(DBIndex%, ByVal title$, ByVal what$) As Integer557 Dim s$558 List1. Visible = True559 List2. Visible = False560 List1. Clear561 Select Case what562 Case sRow ' *******************...::: Select Row:::... ********************563 With MainForm. ListView. ListItems564 For i% = 1 To. Count565 s = CStr(i - 1) + ")" +. Item(i) 566 For j% = 1 To DB(DBIndex). Header. ColCount - 1567 s = s + " - " +. Item(i). SubItems(j) 568 Next j569 List1. AddItem s570 Next i571 End With572 573 Case sCol ' *******************...::: Select Col:::... ********************574 With MainForm. ListView. ColumnHeaders575 For i% = 1 To. Count576 List1. AddItem CStr(i - 1) + ")" +. Item(i) 577 Next i578 End With579 580 Case sTable ' *******************...::: Select Table:::... ********************581 For i% = 0 To (MainForm. TabStrip. Tabs. Count - 1) 582 List1. AddItem CStr(i) + ")" + MainForm. TabStrip. Tabs. Item(i + 1) 583 Next i584 End Select585586 If (List1. ListCount > 0) Then587 List1. ListIndex = 0588 Call ButEnabled(SelectImg, SelectBut, True) 589 Else590 Call ButEnabled(SelectImg, SelectBut, False) 591 End If592 Label1. Caption = title593 tmp = - 1594 Show vbModal595 SelectDlg = CStr(tmp) 596End Function597598Public Function MultiSelectDlg(DBIndex%, ByVal title$, ByVal what$) As String599 Dim s$600 List2. Visible = True601 List1. Visible = False602 List2. Clear603 CheckConfirm. Visible = False604 If (what = sRow) Then605 With MainForm. ListView. ListItems606 For i% = 1 To. Count607 s = CStr(i - 1) + ")" +. Item(i) 608 For j% = 1 To DB(DBIndex). Header. ColCount - 1609 s = s + " - " +. Item(i). SubItems(j) 610 Next j611 List2. AddItem s612 Next i613 End With614 Else615 With MainForm. ListView. ColumnHeaders616 For i% = 1 To. Count617 List2. AddItem CStr(i - 1) + ")" +. Item(i) 618 Next i619 End With620 End If621 Call ButEnabled(SelectImg, SelectBut, False) 622 Label1. Caption = title623 tmps = ""624 Show vbModal625 CheckConfirm. Visible = True626 MultiSelectDlg = tmps627End Function628629Private Sub Form_Activate() 630 Call ButEnabled(CancelImg, CancelBut, True) 631End Sub632633Private Sub SelectBut_Click() 634 If (SelectBut. Tag = 0) Then Exit Sub635 If (List1. Visible) Then636 tmp = List1. ListIndex637 Else638 For i = 0 To List2. ListCount - 1639 If List2. Selected(i) Then tmps = tmps + CStr(i) + ","640 Next i641 tmps = Strings. Left$(tmps, Len(tmps) - 1) 642 End If643 Hide644End Sub645646Private Sub CancelBut_Click() 647 Hide648End Sub649650Private Sub List1_Click() 651 Call ButEnabled(SelectImg, SelectBut, (List1. ListIndex <> - 1)) 652End Sub653654Private Sub List2_Click() 655 Call ButEnabled(SelectImg, SelectBut, (List2. SelCount = 2)) 656End SubФорма: QueryMasterForm. frm657Public QMFDBIndex%658659Sub AddStr(str$) 660 If (str <> "") Then661 QueryList. AddItem str662 Else663 Call MsgForm. ErrorMsg("Запрос отменен! ") 664 End If665End Sub666667Private Sub AddImage_Click() 668Call SoundClick669With QueryList670 Select Case QueryTypeCombo. ListIndex671 '******************* Добавление ***********************672 Case 0673 Select Case QuerySubtypeCombo. ListIndex674 Case 0 ' добавление столбца675 Call AddStr(Generate_Add(sCol)) 676 Case 1 ' добавление записи677 Call AddStr(Generate_Add(sRow)) 678 End Select679 '******************* Удаление ***********************680 Case 1681 Select Case QuerySubtypeCombo. ListIndex682 Case 0 ' удаление столбца683 Call AddStr(Generate_Del(sCol)) 684 Case 1 ' удаление записи685 Call AddStr(Generate_Del(sRow)) 686 End Select687 688 '******************* Сортировка ***********************689 Case 2690 Select Case QuerySubtypeCombo. ListIndex691 Case 0 ' сортировка по алфавиту692 Call AddStr(Generate_Sort(sAZ)) 693 Case 1 ' сортировка против алфавита694 Call AddStr(Generate_Sort(sZA)) 695 End Select696 697 '******************* Вывод ***********************698 Case 3699 Select Case QuerySubtypeCombo. ListIndex700 Case 0 ' вывод на равенство записи701 Call AddStr(Generate_Out(sEqual)) 702 Case 1 ' вывод больше записи703 Call AddStr(Generate_Out(sAbove)) 704 Case 2 ' вывод меньше записи705 Call AddStr(Generate_Out(sBelow)) 706 Case 3 ' вывод на равенство кол-ву707 Call AddStr(Generate_Out(sCountEqual)) 708 Case 4 ' вывод больше кол-ва709 Call AddStr(Generate_Out(sCountAbove)) 710 Case 5 ' вывод меньше кол-ва711 Call AddStr(Generate_Out(sCountBelow)) 712 End Select713 714 '******************* Обмен ***********************715 Case 4716 Select Case QuerySubtypeCombo. ListIndex717 Case 0 ' обмен столбцов718 Call AddStr(Generate_Swap(sCol)) 719 Case 1 ' обмен строк720 Call AddStr(Generate_Swap(sRow)) 721 End Select722 723 '******************* Смена ***********************724 Case 5725 Select Case QuerySubtypeCombo. ListIndex726 Case 0 ' смена типа поля727 Call AddStr(Generate_Change(sType)) 728 Case 1 ' смена названия поля729 Call AddStr(Generate_Change(sName)) 730 End Select731 End Select732 733End With734End Sub735736Private Sub CancelBut_Click() 737 Call SoundClick738 If (QueryList. ListCount > 0) Then739 If (MsgForm. QuestMsg("Список запросов не пуст. Выйти? ") = resOk) Then Unload Me740 Else741 Unload Me742 End If743End Sub744745' замена запроса746Private Sub ChangeImage_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) 747 If (Trim(Text1) <> "") Then748 Call SoundClick749 With QueryList750 If (. ListIndex = - 1) Or (Shift And vbShiftMask <> 0) Then751. AddItem Text1752 Else753. List(. ListIndex) = Text1754 End If755 End With756 End If757 Text1 = ""758 Text1. SetFocus759End Sub760761' очистка запросов762Private Sub ClearImage_Click() 763 If (QueryList. ListCount > 0) Then764 Call SoundClick765 If (MsgForm. QuestMsg("Очистить список запросов? ") = resOk) Then766 QueryList. Clear767 Text1 = ""768 Text1. SetFocus769 End If770 End If771End Sub772773' удаление запроса774Private Sub DelImage_Click() 775 If (QueryList. ListIndex >= 0) Then776 Call SoundClick777 If (MsgForm. QuestMsg("Удалить выбранный запрос из списка? ") = resOk) Then778 QueryList. RemoveItem QueryList. ListIndex779 Text1 = ""780 Text1. SetFocus781 End If782 End If783End Sub784785Private Sub Form_Load() 786 QueryTypeCombo. ListIndex = 0787 Call ButEnabled(RunImg, RunBut, True) 788 Call ButEnabled(CancelImg, CancelBut, True) 789 TopImg. Picture = MainForm. TopImageList. ListImages(1). Picture790End Sub791792Private Sub QueryList_DblClick() 793 With QueryList794 If (. ListIndex <> - 1) Then795 Text1 =. List(. ListIndex) 796 Text1. SetFocus797 End If798 End With799End Sub800801Private Sub QueryTypeCombo_Click() 802 With QuerySubtypeCombo803. Clear804 Select Case QueryTypeCombo. ListIndex805 Case 0806. AddItem "Поля"807. AddItem "Записи"808 Case 1809. AddItem "Поля"810. AddItem "Записи"811 Case 2812. AddItem "По алфавиту"813. AddItem "Против алфавита"814 Case 3815. AddItem "Равно записи"816. AddItem "Больше записи"817. AddItem "Меньше записи"818. AddItem "Равно кол-ву копий"819. AddItem "Больше кол-ва копий"820. AddItem "Меньше кол-ва копий"821 Case 4822. AddItem "Полей"823. AddItem "Записей"824 Case 5825. AddItem "Типа поля"826. AddItem "Названия поля"827 End Select828. ListIndex = 0829 End With830End Sub831832Private Sub RunBut_Click() 833 If (QueryList. ListCount > 0) Then834 Call SoundClick835 For i% = 0 To QueryList. ListCount - 1836 Call RunQuery(QMFDBIndex, QueryList. List(i)) 837 Next i838 With MainForm839. TabStrip. SelectedItem =. TabStrip. Tabs(QMFDBIndex + 1) 840 Call ShowTable(QMFDBIndex) 841 End With842 QueryList. Clear843 Call MsgForm. InfoMsg("Запросы выполнены. ") 844 End If845End Sub846847Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) 848 If (KeyCode = 13) Then Call ChangeImage_MouseDown(vbLeftButton, Shift, 1, 1) 849End SubФорма: EditRecordForm. frm850Public ERFDBIndex%851Dim RowIndexSave%852Dim protect As Boolean853Dim Arr() 854855Public Sub LoadData(RowIndex%) 856 RowIndexSave = RowIndex857 With DB(ERFDBIndex). Header858 ReDim Arr(. ColCount, 1) 859 For i% = 0 To. ColCount - 1860 Arr(i, 0) = DB(ERFDBIndex). Rows(RowIndex). Fields(i) 861 Arr(i, 1) = DB(ERFDBIndex). Cols(i). Class862 Next i863 End With864End Sub865866Private Sub CellList_Click() 867 i% = CellList. ListIndex868 Select Case Arr(i, 1) 869 Case ccInteger870 Label6. Caption = "Поле числового типа"871 Call ButEnabled(EditorImg, EditorBut, False) 872 Case ccString873 Label6. Caption = "Поле строкового типа"874 Call ButEnabled(EditorImg, EditorBut, True) 875 End Select876 With Text1877. Text = CStr(Arr(i, 0)) 878. SelStart = 0879. SelLength = Len(. Text) 880 End With881End Sub882883Public Sub OverloadList() 884 CellList. Clear885 For i% = 0 To DB(ERFDBIndex). Header. ColCount - 1886 CellList. AddItem CStr(Arr(i, 0)) 887 Next i888 CellList. ListIndex = 0889End Sub890891Private Sub Form_Load() 892 protect = False893 Call ButEnabled(ReturnImg, ReturnBut, True) 894 Call ButEnabled(EditorImg, EditorBut, False) 895 Call ButEnabled(FlipImg, FlipBut, True) 896 Call ButEnabled(SelectImg, SelectBut, True) 897 Call ButEnabled(CancelImg, CancelBut, True) 898 TopImg. Picture = MainForm. TopImageList. ListImages(1). Picture899 900' If (Not protect) Then901' Call OverloadList902' Else903' protect = False904' End If905 906End Sub907908Private Sub ReturnBut_Click() 909 Call SoundClick910 If (MsgForm. QuestMsg("Восстановить поля из БД? ") = resOk) Then911 Call LoadData(RowIndexSave) 912 Call OverloadList913 Call MsgForm. InfoMsg("Поля были восстановлены! ") 914 End If915End Sub916917Private Sub EditorBut_Click() 918 If (EditorBut. Tag = 0) Then Exit Sub919 Call SoundClick920 i% = CellList. ListIndex921 If (Arr(i, 1) = ccInteger) Then922 Call MsgForm. InfoMsg("Для редактирования чисел редактор не исспользуется. ") 923 Exit Sub924 End If925 If IsDate(Text1. Text) And (MonthForm. Check1. value = 0) Then926 s$ = Text1. Text927 p% = InStr(1, s, ". ") 928 MonthForm. MonthView1. Day = CInt(Left(s, p - 1)) 929 s = Mid(s, p + 1) 930 p% = InStr(1, s, ". ") 931 MonthForm. MonthView1. Month = CInt(Left(s, p - 1)) 932 s = Mid(s, p + 1) 933 MonthForm. MonthView1. Year = CInt(s) 934935 MonthForm. Show vbModal936 Select Case MonthForm. res937 Case 1938 Text1. Text = CStr(MonthForm. MonthView1. Day) + ". " + CStr(MonthForm. MonthView1. Month) + ". " + CStr(MonthForm. MonthView1. Year) 939 Case - 1940 GoTo text_941 End Select942 Else943text_: 944 With TextEditForm945. TextEdit. Text = Text1. Text946 protect = True947. Show vbModal948 If (. res = 1) Then Text1. Text =. TextEdit. Text949 Unload TextEditForm950 End With951 End If952End Sub953954Private Sub SelectBut_Click() 955Call SoundClick956If UserIsAdmin Then957 If (MsgForm. QuestMsg("Сохранить поля в БД? ") = resOk) Then958 With DB(ERFDBIndex) 959 Dim tmparr() 960 ReDim tmparr(. Header. ColCount) 961 For i% = 0 To. Header. ColCount - 1962 tmparr(i) = Arr(i, 0) 963 Next i964 If (Not FindRow(ERFDBIndex, tmparr)) Then965 For i% = 0 To. Header. ColCount - 1966. Rows(RowIndexSave). Fields(i) = Arr(i, 0) 967 Next i968 DBChanged = True969 Call MsgForm. InfoMsg("Поля были сохранены в БД! ") 970 Call ShowTable(ERFDBIndex) 971 Unload Me972 Else973 Call MsgForm. ErrorMsg("Изменённое поле перекрывает уже существующее! Измените данные. ") 974 End If975 End With976 End If977Else978 Call ProtectedMsg979End If980End Sub981982Private Sub CancelBut_Click() 983 Call SoundClick984 Unload Me985End Sub986987' Посимвольное сравнение str с '2147483647' - максимальным значением Long988Function isVeryLong(str$) As Boolean989 If (Left(str, 1) = "-") Then str = Mid(str, 2) 990 For i% = 1 To (10 - Len(str)) 991 str = "0" + str992 Next i993 994 maxval$ = "2147483647"995 For i% = 1 To 10996 ch1$ = Mid(maxval, i, 1) 997 ch2$ = Mid(str, i, 1) 998 If (Asc(ch2) > Asc(ch1)) Then999 isVeryLong = True1000 GoTo exit_1001 ElseIf (ch2 <> ch1) Then1002 isVeryLong = False1003 GoTo exit_1004 End If1005 Next i1006 isVeryLong = False1007exit_: 1008End Function10091010Private Sub FlipBut_Click() 1011Call SoundClick1012If UserIsAdmin Then1013 tmp = Null1014 i% = CellList. ListIndex1015 mln% = 101016 If (Left(Text1. Text, 1) = "-") Then mln = mln + 11017 If (Arr(i, 1) = ccInteger) Then1018 If (Len(Trim(Text1. Text)) > mln) Or (isVeryLong(Trim(Text1. Text))) Then1019 Call MsgForm. ErrorMsg("Числовое значение превышает разрядную сетку! ") 1020 With Text11021. SelStart = 01022. SelLength = Len(. Text) 1023 End With1024 GoTo exit_1025 End If1026 1027 If IsInteger(Trim(Text1. Text)) Then1028 tmp = CLng(Text1. Text) 1029 Else1030 Call MsgForm. ErrorMsg("Значение не является целым числом! ") 1031 With Text11032. SelStart = 01033. SelLength = Len(. Text) 1034 End With1035 End If1036 Else1037 If (Trim(Text1. Text) = "") Then1038 If (MsgForm. QuestMsg("Строка пуста. Продолжить? ") = resOk) Then1039 tmp = Text1. Text1040 GoTo exit_1041 Else1042 With Text11043. SelStart = 01044. SelLength = Len(. Text) 1045 End With1046 End If1047 Else1048 tmp = Text1. Text1049 End If1050 End If1051 1052 ' Введёное значение прошло контроль1053 If (Not IsNull(tmp)) Then1054 Select Case Arr(i, 1) 1055 Case ccInteger: Arr(i, 0) = CLng(tmp) 1056 Case ccString: Arr(i, 0) = CStr(tmp) 1057 End Select1058 curpos% = CellList. ListIndex1059 Call OverloadList1060 CellList. ListIndex = curpos1061 End If1062exit_: 1063Else1064 Call ProtectedMsg1065End If1066End Sub10671068Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) 1069 If (KeyCode = 13) Then FlipBut_Click1070End SubФорма: MsgForm. frm1071Dim res As Byte10721073Public Function ErrorMsg(str$) As Integer1074 Caption = "Ошибка"1075 Text = str1076 1077 YesFrame. Visible = True1078 NoFrame. Visible = False1079 CancelFrame. Visible = False10801081 InfoImage. Visible = False1082 ErrImage. Visible = True1083 QuestImage. Visible = False10841085 YesFrame. Move 24001086 res = resBad1087 Call sndPlaySound("Data\Error. wav", SND_ASYNC + SND_FILENAME + SND_LOOP + SND_APPLICATION) 1088 Show vbModal1089 ErrorMsg = res1090 Unload Me1091End Function10921093Public Function InfoMsg(str$) As Integer1094 Caption = "Информация"1095 Text = str1096 1097 YesFrame. Visible = True1098 NoFrame. Visible = False1099 CancelFrame. Visible = False11001101 InfoImage. Visible = True1102 ErrImage. Visible = False1103 QuestImage. Visible = False1104 1105 YesFrame. Move 240011061107 res = 01108 Call sndPlaySound("Data\Info. wav", SND_ASYNC + SND_FILENAME + SND_LOOP + SND_APPLICATION) 1109 Show vbModal1110 InfoMsg = res1111 Unload Me1112End Function11131114Public Function QuestMsg(str$, Optional showcancel As Boolean = False) As Integer1115 Caption = "Вопрос"1116 Text = str1117 1118 If showcancel Then1119 YesFrame. Visible = True1120 NoFrame. Visible = True1121 CancelFrame. Visible = True1122 1123 YesFrame. Move 3601124 NoFrame. Move 43801125 CancelFrame. Move 24001126 1127 Else1128 YesFrame. Visible = True1129 NoFrame. Visible = True1130 CancelFrame. Visible = False1131 1132 YesFrame. Move 9001133 NoFrame. Move 38401134 End If11351136 InfoImage. Visible = False1137 ErrImage. Visible = False1138 QuestImage. Visible = True11391140 res = 01141 Call sndPlaySound("Data\Quest. wav", SND_ASYNC + SND_FILENAME + SND_LOOP + SND_APPLICATION) 1142 Show vbModal1143 QuestMsg = res1144 Unload Me1145End Function11461147Private Sub CancelBut_Click() 1148 res = resCancel1149 Call SoundClick1150 Hide1151End Sub11521153Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) 1154 Select Case KeyCode1155 Case 131156 Call YesBut_Click1157 Case 271158 Call NoBut_Click1159 Case 81160 If (CancelFrame. Visible = True) Then Call CancelBut_Click1161 End Select1162End Sub11631164Private Sub Form_Load() 1165 Call ButEnabled(YesImg, YesBut, True) 1166 Call ButEnabled(CancelImg, CancelBut, True) 1167 Call ButEnabled(NoImg, NoBut, True) 1168End Sub11691170Private Sub NoBut_Click() 1171 res = resNo1172 Call SoundClick1173 Hide1174End Sub11751176Private Sub YesBut_Click() 1177 res = resOk1178 Call SoundClick1179 Hide1180End Sub1181Форма: DiagMasterForm. frm1182Dim DiagData() 11831184Private Sub DiagTypeCombo_Click() 1185 DiagTypeImage. Picture = DiagTypeImgs. ListImages(DiagTypeCombo. ListIndex + 1). Picture1186 Select Case DiagTypeCombo. ListIndex1187 Case 0, 2: Frame2. Visible = False1188 Case 1, 3: Frame2. Visible = True
Страницы: 1, 2, 3, 4
|
|