Страница: 1 |
Страница: 1 |
Вопрос: Выборка данных
Добавлено: 02.03.09 09:57
Автор вопроса: alexfor
Всем привет. Существует колонка этаж дома, и колонка этажность дома. Задача в следующем. При активизации чекбокса необходимо выбрать все этажи без первых и последних. Как разрулить?
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
Леша
ICQ: 362231326
Вопросов: 9
Ответов: 76
Профиль | | #1
Добавлено: 02.03.09 13:26
не понял - если можно то поподробнее?колонки из чекбоксов?
Номер ответа: 2
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #2
Добавлено: 02.03.09 13:58
Нужен SQL-запрос?
Номер ответа: 3
Автор ответа:
Леша
ICQ: 362231326
Вопросов: 9
Ответов: 76
Профиль | | #3
Добавлено: 02.03.09 14:44
это квартиры продавать как места в кинотеатре? колонки таблицы? И как это "..без первых и последних?..." в доме то один первый этаж и один последний? или есть какойто критерий сортировки этажей на первые и последние?
Номер ответа: 4
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #4
Добавлено: 02.03.09 15:43
Некая абстрактная таблица с полями Этаж и Этажность.
1. Этаж = 1 (исключить из списка).
2. Этаж = Этажность (исключить из списка).
Челу нужен SQL-запрос.
Номер ответа: 5
Автор ответа:
alexfor
Вопросов: 28
Ответов: 68
Профиль | | #5
Добавлено: 02.03.09 17:56
Привет! Значения полей floor и house числовые, они подаются в отдельных полях. Т.е. есть разные этажи и этажность домов. к примеру если в списке есть данные этажей 5-ти этажного дома. Данные подаются в грид. На форме есть чекбокс, если значение 1 - то выбрать все этажи кроме крайних, т.е. в грид при этом должны пойти записи, где этажи 2, 3, 4. Но тут еще фишка есть, дома то разные бывают. Выбрать между этажами не проблема, как привязать это к максимальной высоте дома, если она бывает разная, к 9-ти этажному дому 5 этаж не крайний, хотя к 5-ти этажке да
Номер ответа: 6
Автор ответа:
alexfor
Вопросов: 28
Ответов: 68
Профиль | | #6
Добавлено: 02.03.09 18:01
Ранее код выборки между этажами был такой:
If txtfl1.Text <> "" Then
fFloor1 = True
gFloor1 = txtfl1.Text
'MsgBox gFloor1
End If
If txtfl2.Text <> "" Then
fFloor2 = True
gFloor2 = txtfl2.Text
'MsgBox gFloor2
End If
If fFloor1 And fFloor2 Then
fFloorBoth = True
fFloor1 = False
fFloor2 = False
floorSQL = "floor>='" & gFloor1 & "') And (floor<='" & gFloor2 & "')"
'MsgBox floorSQL
End If
If fFloor1 Then
floorSQL = "floor>='" & gFloor1 & "')"
End If
If fFloor2 Then
floorSQL = "floor<='" & gFloor2 & "')"
End If
Номер ответа: 7
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #7
Добавлено: 02.03.09 18:17
alexfor, ты можешь нормально написать, откуда берутся твои данные, где таблица, что за грид, в чем ты вообще работаешь (vb6 / access) и т.д. А то ведь я на такой вопрос тебя могу подсказать только абстрактно )
Номер ответа: 8
Автор ответа:
alexfor
Вопросов: 28
Ответов: 68
Профиль | | #8
Добавлено: 02.03.09 20:16
Привет mc-black, работаю в vb6. Данные беруться с SQLServer MSDE через ODBC и грузятся в обычный Datagrid. На форме есть поисковые признаки, текстовики, листбоксы и т.д. Есть строка подключения:
 im ConnectionString As String
ConnectionString = "Provider=MSDASQL.1;Persist Security Info=Falseata Source=Object;Mode=ReadWrite;Initial Catalog=object"
Set cn = New ADODB.Connection
cn.Open ConnectionString
Есть основной запрос, роль where выполняют переменные, которые идут через свои SQL запросы
Option Explicit
Dim strSQLmain As String ' основной рекордсет
Dim gFloor1 As String '1 переменная значения этажа
Dim gFloor2 As String '2 переменная значения этажа
Dim fFloor1 As Boolean
Dim fFloor2 As Boolean
Dim fFloorBoth As Boolean
Dim floorSQL As String 'SQL запрос по этажам
Private Sub cmdFilter_Click()
‘это флаги этажей
fFloor1 = False
fFloor2 = False
fFloorBoth = False
‘проверяем, что в первом поле этажа
If txtfl1.Text <> "" Then
fFloor1 = True
gFloor1 = txtfl1.Text
'MsgBox gFloor1
End If
‘проверяем, что во втором поле этажа
If txtfl2.Text <> "" Then
fFloor2 = True
gFloor2 = txtfl2.Text
'MsgBox gFloor2
End If
‘Если в первом поле есть что-то, то тогда формируем запрос с этого значения
If fFloor1 Then
floorSQL = "floor>='" & gFloor1 & "')"
End If
‘Аналогично, во втором поле по это значение
If fFloor2 Then
floorSQL = "floor<='" & gFloor2 & "')"
End If
‘Если заполнены два поля, значит выбираем диапазон между какими-то этажами
If fFloor1 And fFloor2 Then
fFloorBoth = True
fFloor1 = False
fFloor2 = False
floorSQL = "floor>='" & gFloor1 & "') And (floor<='" & gFloor2 & "')"
'MsgBox floorSQL
End If
‘основной запрос, в котором есть
strSQLmain = "SELECT floor, house FROM object WHERE "
‘Далее формируем окончательный запрос после WHERE
'этаж, нижняя граница
If fFloor1 Then
STRSQL = strSQLmain & floorSQL
dtgobjects.Caption = "Записи" & " Этаж >= " & gFloor1
End If
'этаж, верхняя граница
If fFloor2 Then
STRSQL = strSQLmain & floorSQL
dtgobjects.Caption = "Записи" & " Этаж <= " & gFloor2
End If
'этаж, интервал
If fFloorBoth Then
STRSQL = strSQLmain & floorSQL
dtgobjects.Caption = "Записи" & " Этаж >= " & gFloor1 & " <= " & gFloor2
End If
If STRSQL = "" Then
MsgBox "Не выбраны критерии!", vbExclamation, "Сообщение"
Exit Sub
End If
STRSQL = STRSQL & ";"
'MsgBox STRSQL
If STRSQL <> "" Then
Set dtgobjects.DataSource = Nothing
Adodcobject.Recordset.Close
Adodcobject.Recordset.Open STRSQL, cn
Set dtgobjects.DataSource = Adodcobject
End If
End Sub
Вот в принципе где-то так. Наверняка если использовать чек, по которому произойдет выборка между «крайними» (первым и последним) нужно вообще задизейблить текстовые поля этажей, чтобы не возникало желание еще чего-то туда писать.
Номер ответа: 9
Автор ответа:
alexfor
Вопросов: 28
Ответов: 68
Профиль | | #9
Добавлено: 03.03.09 15:47
Привет, проблема решена.
Номер ответа: 10
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #10
Добавлено: 03.03.09 22:26
Вот видишь, правильно поставленный вопрос - половина всего решения. В твоем случае = 100% решения.
Номер ответа: 11
Автор ответа:
alexfor
Вопросов: 28
Ответов: 68
Профиль | | #11
Добавлено: 04.03.09 13:03
kraiSQL = "(CASE WHEN (floor = hous OR floor = 1) THEN 'yes' ELSE 'no' END) = 'no')"