Advertisement
AZJIO

Test SQLite

Aug 26th, 2013
669
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 3.95 KB | None | 0 0
  1. #include <TabConstants.au3>
  2. #include <SQLite.au3>
  3. #include <Array.au3>
  4.  
  5. $sPathBase = @ScriptDir & '\base.db'
  6. _SQLite_Startup() ; загрузка SQLite.dll в память (2мб)
  7. _SQLite_Open($sPathBase) ; Открывает базу данных
  8. _SQLite_Exec(-1, "Create Table IF NOT Exists 'Clients' ('ФИО' Text, 'Телефон' Text);") ; Создаёт таблицу "Clients" с 3 колонки ФИО, Телефон
  9. _SQLite_Exec(-1, "Create Table IF NOT Exists 'Master' ('ФИО' Text, 'Телефон' Text);") ; Создаёт таблицу "Master" с 3 колонки ФИО, Телефон
  10. _SQLite_Exec(-1, "Create Table IF NOT Exists 'Service' ('Сервис' Text);") ; Создаёт таблицу "Service" с 2 колонки Сервис
  11. _SQLite_Exec(-1, "Create Table IF NOT Exists 'Assot' ('Мастер' Text, 'Клиент' Text, 'Дата' Text, 'Услуга' Text, 'Размер оплаты' Text);") ; Создаёт таблицу "Assot" с 6 колонки Мастер - Клиент - Дата - Услуга - Размер оплаты
  12.  
  13. $hGui = GUICreate('Программа', 450, 460)
  14.  
  15. $tab = GUICtrlCreateTab(0, 0, 790, 370, $TCS_BUTTONS) ; Вкладки со стилем в виде кнопок
  16.  
  17. $tab0 = GUICtrlCreateTabItem("Заявки")
  18.  
  19. $iBtnAddApp = GUICtrlCreateButton('Добавить заявку', 10, 40, 120, 28)
  20. $iBtnAddSrv = GUICtrlCreateButton('Добавить вид услуги', 10, 70, 120, 28)
  21. $iBtnAddMaster = GUICtrlCreateButton('Добавить мастера', 10, 100, 120, 28)
  22.  
  23. $tab1 = GUICtrlCreateTabItem("Отчёт")
  24.  
  25. GUICtrlCreateTabItem('') ; конец вкладок
  26.  
  27. ; $iBtn = GUICtrlCreateButton('Start', 10, 10, 120, 22)
  28. $iStatusBar = GUICtrlCreateLabel('StatusBar', 5, 460 - 20, 443, 17)
  29. GUISetState()
  30.  
  31. OnAutoItExitRegister('_Exit') ; При выходе закрывает базу и выгружает dll
  32. Func _Exit()
  33.     _SQLite_Close($sPathBase)
  34.     _SQLite_Shutdown()
  35. EndFunc   ;==>_Exit
  36.  
  37. While 1
  38.     Switch GUIGetMsg()
  39.         Case $iBtnAddApp ; Добавить заявку
  40.             $sNameTable = 'Service'
  41.             $aNames = _NameCol($sNameTable) ; Пока возвращает имена колонок
  42.             _ArrayDisplay($aNames, 'Array')
  43.         Case $iBtnAddSrv ; Добавить вид услуги
  44.             $tmp = InputBox('Добавить услугу', ' ', '', '', 170, 100)
  45.             If Not @error Then _Insert_Service($tmp)
  46.         Case $iBtnAddMaster ; Добавить мастера
  47.             $sNameTable = 'Service'
  48.             MsgBox(0, 'Сообщение', _CountRowInTable($sNameTable)) ; Пока возвращает количество строк в таблице
  49.         Case -3
  50.             Exit
  51.     EndSwitch
  52. WEnd
  53.  
  54. Func _Insert_Service($tmp) ; функция добавления элементов в файл базы
  55.     Local $hQuery, $sRow
  56.     If _SQLite_QuerySingleRow(-1, "SELECT ROWID,* FROM Service WHERE Сервис = '" & $tmp & "';", $sRow) = $SQLITE_OK Then
  57.         GUICtrlSetData($iStatusBar, 'Уже существует эта услуга в списке')
  58.     Else
  59.         _SQLite_Exec(-1, "INSERT INTO 'Service'(Сервис) VALUES ('" & $tmp & "');") ; Вставка новой
  60.         GUICtrlSetData($iStatusBar, 'Строка изменена, |' & $sRow & '|')
  61.     EndIf
  62. EndFunc   ;==>_Insert_Service
  63.  
  64. Func _NameCol($sNameTable) ; функция добавления элементов в файл базы
  65.     Local $hQuery, $aNames
  66.     _SQLite_Query(-1, "SELECT ROWID,* FROM " & $sNameTable & ";", $hQuery)
  67.     _SQLite_FetchNames($hQuery, $aNames)
  68.     Return $aNames
  69. EndFunc   ;==>_CountRowInTable
  70.  
  71. Func _CountRowInTable($sNameTable) ; функция добавления элементов в файл базы
  72.     Local $hQuery, $aRow
  73.     _SQLite_Query(-1, "SELECT COUNT(*) FROM " & $sNameTable & ";", $hQuery)
  74.     If _SQLite_FetchData($hQuery, $aRow, False, False) = $SQLITE_OK Then
  75.         Return $aRow[0]
  76.     Else
  77.         Return SetError(1, 0, 0)
  78.     EndIf
  79.     _SQLite_QueryFinalize($hQuery) ; завершает запрос
  80. EndFunc   ;==>_CountRowInTable
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement