Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ПОМОГИТЕ С SQL ЗАПРОСОМ! / 17 сообщений из 17, страница 1 из 1
04.05.2006, 14:56
    #33707177
Alexus_stav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
Есть таблица "Данные" (Код, КодПродукта, Период, Значение).
Необходимо сделать выборку типа "Select Значение From Данные Where КодПродукта=ID"

При этом формируется вертикальная выборка значений:

Период_____Значение
2001_________X1
2002_________X2
2003_________X3
2004_________X4

Как сделать выборку так, чтобы она была горизонтальной:

Период_____2001__2002__2003__2004
Зачение_____X1____X2____X3____X4

При этом выбранные значения формируются в виде RecordSet и прикрепляются к DataGrid через ADODC.
Adodc.RecordSource = "SQL Запрос"
Set DataGrid.DataSource=Adodc

ПОМОГИТЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
04.05.2006, 15:09
    #33707247
Tauzer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
С датагридом я не работал,но могу привести как это делается в FlexGrid
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
dim i as integer

strSql = "Select Значение From Данные Where КодПродукта=ID"

rs.Open strSql, cnMain, adOpenStatic, adLockReadOnly

FgUsers.Cols = rs.RecordCount +  1 
Me.FgUsers.Rows =  3 

i =  1 

Do Until rs.EOF
    With Me.FgUsers
               
        .Col = i
        .Row =  1 : .Text = rs!Период
        .Row =  2 : .Text = rs!Значение
                
    End With

    rs.MoveNext
loop
rs.close


Может быть мой ответ не в тему,но надеюсь что поможет.
...
Рейтинг: 0 / 0
04.05.2006, 15:13
    #33707271
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
2 Tauzer: категорически не согласен. Выборка должна разворачиваться на сервере, а клиент должен тупо (и быстро) ее отображать.
...
Рейтинг: 0 / 0
04.05.2006, 15:16
    #33707289
Tauzer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
Я всегда использовал такой вариант заполнения грида.Если поскажешь как это сделать правильнее ,то буду благодарен.
...
Рейтинг: 0 / 0
04.05.2006, 15:20
    #33707298
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
почитай про TRANSFORM
...
Рейтинг: 0 / 0
04.05.2006, 15:28
    #33707326
barrabas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
TIKOпочитай про TRANSFORM
смотря в какой СУБД, в аксе и вроде MSSQL200X трансформ есть а например в оракле его нет
...
Рейтинг: 0 / 0
04.05.2006, 15:43
    #33707404
SQLExplorer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
Melkiades2 Tauzer: категорически не согласен. Выборка должна разворачиваться на сервере, а клиент должен тупо (и быстро) ее отображать.
Я согласен, что максимум работы должен выполнять сервер, но замечу, что в обоих случаях отобразить данные при помощи подобного цикла одинаково тупо и одинаково быстро
...
Рейтинг: 0 / 0
04.05.2006, 15:43
    #33707405
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
MSSQL 6.x,7.x,2000 - такого НЕТ
надо юзать или самописные процедуры или (что более правильнее) использовать MSAS
...
Рейтинг: 0 / 0
04.05.2006, 16:06
    #33707507
Alexus_stav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
Использую MS Access для хранения данных. Просто не найду правильного решения пробемы. Надо как бы трансонировать данные из вертикалього представления в горизонтальное так, чтобы полученный RecordSet можно было загонять в DataGrid и динамически обновлять данные.
...
Рейтинг: 0 / 0
04.05.2006, 16:07
    #33707512
Tauzer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
SQLExplorer Melkiades2 Tauzer: категорически не согласен. Выборка должна разворачиваться на сервере, а клиент должен тупо (и быстро) ее отображать.
Я согласен, что максимум работы должен выполнять сервер, но замечу, что в обоих случаях отобразить данные при помощи подобного цикла одинаково тупо и одинаково быстро

Мужики, я плохо программирую, и возможно не знаю чего-то важного ибо учусь сам по себе, а нужную информацию беру в основном с этого форума.
Если мое заполнение грида тупое и не правильное, приведите пример как правильно это нужно сделать.

Заранее благодарен.
...
Рейтинг: 0 / 0
04.05.2006, 16:09
    #33707517
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
TIKO уже написал, что нужно юзать

читай справку про TRANSFORM
...
Рейтинг: 0 / 0
04.05.2006, 16:22
    #33707583
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
Пример:
Код: plaintext
1.
2.
3.
4.
TRANSFORM Sum(trnas.summa) AS [Sum-summa]
SELECT trnas.месяц
FROM trnas
GROUP BY trnas.месяц
PIVOT Format([mesac],"mmm") In ("янв","фев","мар","апр","май","июн","июл","авг","сен","окт","ноя","дек");
...
Рейтинг: 0 / 0
04.05.2006, 16:42
    #33707650
SQLExplorer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
Tauzer SQLExplorer Melkiades2 Tauzer: категорически не согласен. Выборка должна разворачиваться на сервере, а клиент должен тупо (и быстро) ее отображать.
Я согласен, что максимум работы должен выполнять сервер, но замечу, что в обоих случаях отобразить данные при помощи подобного цикла одинаково тупо и одинаково быстро

Мужики, я плохо программирую, и возможно не знаю чего-то важного ибо учусь сам по себе, а нужную информацию беру в основном с этого форума.
Если мое заполнение грида тупое и не правильное, приведите пример как правильно это нужно сделать.

Заранее благодарен.

Твой способ очень даже хороший, для 99% приложений лучше не придумать, исключение составляют приложения возвращающие большое количество строк (что, как правило, неопровдано).

Под "тупо" я имел в виду простоту (а все гениальное как известно просто),

Теперь про быстроту. Нет разницы между перебором по колонкам или по строкам при заполнении грида, но если делать транспонирование, то это займет дополнительное время у сервера, хоть и не большое,наверное,
а это в свою очередь увеличит суммарное время.

Что касается, ADODC, то НЕ НУЖЕН ОН НИКОМУ, толко авторам книг "Первые шаги для чайников"
...
Рейтинг: 0 / 0
04.05.2006, 17:07
    #33707733
Tauzer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
SQLExplorer Tauzer SQLExplorer Melkiades2 Tauzer: категорически не согласен. Выборка должна разворачиваться на сервере, а клиент должен тупо (и быстро) ее отображать.
Я согласен, что максимум работы должен выполнять сервер, но замечу, что в обоих случаях отобразить данные при помощи подобного цикла одинаково тупо и одинаково быстро

Мужики, я плохо программирую, и возможно не знаю чего-то важного ибо учусь сам по себе, а нужную информацию беру в основном с этого форума.
Если мое заполнение грида тупое и не правильное, приведите пример как правильно это нужно сделать.

Заранее благодарен.

Твой способ очень даже хороший, для 99% приложений лучше не придумать, исключение составляют приложения возвращающие большое количество строк (что, как правило, неопровдано).

Под "тупо" я имел в виду простоту (а все гениальное как известно просто),

Теперь про быстроту. Нет разницы между перебором по колонкам или по строкам при заполнении грида, но если делать транспонирование, то это займет дополнительное время у сервера, хоть и не большое,наверное,
а это в свою очередь увеличит суммарное время.



Полностью Согласен.
...
Рейтинг: 0 / 0
04.05.2006, 18:33
    #33708076
Alexus_stav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
Необходима двухстороння связь с базой данных. Т.е. все изменения в таблице должны отражаться в базе. Исползование Microsoft FlexGrid или HiereticalGrid не обеспечивают такой метод доступа. При их использовании приходится все отслеживать кодом. когда необходим откат изменений, приходится делать копию таблицы, а при нажатии кнопки 'Сохранить' оригинальную таблицу и все связанные с ней заменяю резервными. Оченнь неудобно. В .Net это реализовано все через DataAdapet и DataSet..., но VS2005 требовательна к железу. Приходится использовать VB6. Только вот DataGrid функциональностью уступает (нельзя заблокировать первую колонку, нет выделения ячеек цветом и т.д.)

Может кто подскажет необходимо работать с базой в VB6 (SQL Server, MS Access), чтобы была система откатов изменений и работало быстро
...
Рейтинг: 0 / 0
05.05.2006, 07:36
    #33708731
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
Alexus_stavНеобходима двухстороння связь с базой данных. Т.е. все изменения в таблице должны отражаться в базе. Исползование Microsoft FlexGrid или HiereticalGrid не обеспечивают такой метод доступа. При их использовании приходится все отслеживать кодом. когда необходим откат изменений, приходится делать копию таблицы, а при нажатии кнопки 'Сохранить' оригинальную таблицу и все связанные с ней заменяю резервными. Оченнь неудобно. В .Net это реализовано все через DataAdapet и DataSet..., но VS2005 требовательна к железу. Приходится использовать VB6. Только вот DataGrid функциональностью уступает (нельзя заблокировать первую колонку, нет выделения ячеек цветом и т.д.)

Может кто подскажет необходимо работать с базой в VB6 (SQL Server, MS Access), чтобы была система откатов изменений и работало быстро

прочти про ROLLBACK
...
Рейтинг: 0 / 0
05.05.2006, 14:13
    #33710282
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ПОМОГИТЕ С SQL ЗАПРОСОМ!
Alexus_stavТолько вот DataGrid функциональностью уступает (нельзя заблокировать первую колонку, нет выделения ячеек цветом и т.д.)
я использую грид от ComponentOne. Там есть все это и даже больше.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ПОМОГИТЕ С SQL ЗАПРОСОМ! / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]