Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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. На форме есть поисковые признаки, текстовики, листбоксы и т.д. Есть строка подключения:
 ;Dim ConnectionString As String
 ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data 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

Вот в принципе где-то так. Наверняка если использовать чек, по которому произойдет выборка между «крайними» (первым и последним) нужно вообще задизейблить&#61514; текстовые поля этажей, чтобы не возникало желание еще чего-то туда писать.

Ответить

Номер ответа: 9
Автор ответа:
 alexfor



Вопросов: 28
Ответов: 68
 Профиль | | #9 Добавлено: 03.03.09 15:47
Привет, проблема решена.

Ответить

Номер ответа: 10
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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')"

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам