Что нового

Вывод данных из базы SQLite

VasiliyRS

Новичок
Сообщения
7
Репутация
0
Версия AutoIt: 3.3.6.1

Описание:
Добрый день. Имеется база аналогичная по структуре скриншоту ниже:
09eee3c51322.jpg

Задумка такая: 3 столбца данные1,2,3 выводятся в gui посредством GUICtrlCreateRadio, пользователь отмечает чекбоксом нужное и нажимает GUICtrlCreateButton, после чего получает список (в любом виде) из столбца "имя" только тех имён, которые имеют в выбранном столбце "данные" имеют значение "да".
Примечания:
База со скриншота прикреплена на всякий случай. Проблема конкретно в том, как сделать нужный вывод данных, ни как не могу сообразить. Буду рад помощи.
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Код:
#include <GUIConstantsEx.au3>
#include <SQLite.au3>
#include <Array.au3>
Global $iRows, $iColumns, $aResult

_SQLite_Startup()
_SQLite_Open(@ScriptDir & '\test.db')

$hGUI = GUICreate('SQLite', 150, 150)
$hCheck_1 = GUICtrlCreateCheckbox('данные1', 30, 10, 90, 21)
$hCheck_2 = GUICtrlCreateCheckbox('данные2', 30, 40, 90, 21)
$hCheck_3 = GUICtrlCreateCheckbox('данные2', 30, 70, 90, 21)
$hButtonSelect = GUICtrlCreateButton('Выбрать', 30, 100, 90, 21)
GUISetState()

While 1
	$msg = GUIGetMsg()
	Select
		Case $msg = $GUI_EVENT_CLOSE
			Exit
		Case $msg = $hButtonSelect
			$iCount = 0
			$sSQL = 'SELECT имя FROM data WHERE '
			If GUICtrlRead($hCheck_1) = $GUI_CHECKED Then
				$sSQL &= 'данные1 = "да"'
				$iCount += 1
			EndIf
			If GUICtrlRead($hCheck_2) = $GUI_CHECKED Then
				If $iCount > 0 Then $sSQL &= ' AND '
				$sSQL &= 'данные2 = "да"'
				$iCount += 1
			EndIf
			If GUICtrlRead($hCheck_3) = $GUI_CHECKED Then
				If $iCount > 0 Then $sSQL &= ' AND '
				$sSQL &= 'данные3 = "да"'
				$iCount += 1
			EndIf
			If $iCount = 0 Then
				MsgBox(0, 'Ошибка', 'Ничего не выбрано')
			Else
				_SQLite_GetTable(-1, $sSQL, $aResult, $iRows, $iColumns)
				If UBound($aResult) = 2 Then
					MsgBox(0, 'Ошибка', 'По выбранным условиям ничего не найдено')
				Else
					_ArrayDisplay($aResult)
				EndIf
			EndIf
	EndSelect
WEnd
 
Верх