Форум: "Базы";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
ВнизTQuery и TDBGrid - Глюки Найти похожие ветки
← →
Sensor (2003-07-08 16:06) [0]Народ, помогите, плиз, срочна нада, я не знаю в чем дело, опишу ситуацию:
У меня стоит MSSQL Server v.8 . На форме лежит 3 компонента: TDBGrid, TDataSource и TQuery.
DataSource1.DataSet := Query1
DBGrid1.DataSource := DataSource1
Мне нужно, загрузить из двух таблиц (DOLGI, BAZA) определенные колонки в DBGrid1.
В Query1.SQL пишу запрос (даже для теста можно Select * from dbo.BAZA, dbo.DOLGI) - все нормально. Запускаю программу, в DBGrid все колонки из двух таблиц, НО только я прокручиваю скроллер в GRID"e в самый низ (в таблицах очень много записей), как программа повисает и начинает дико съедать ресурсы машины - оперативу, потом уходит в свап и комп чуть ли не повисает.
Делал запрос и через SQL Builder (правая кнопка по Query1) - выбирал нужные колонки - итог тот же. НО, с одной таблицей все работает нормально и скроллер и все.
Пробовал использовать другие компоненты - SDAC (там тоже есть типа Query) - итог тот же, прога сьедат ресурсы и висит...
**
Народ, подскажите, в чем дело?
Мне всего лишь надо выбрать из двух (и более) таблиц нужные колонки и запихнуть их в DBGrid1
*
Заранее спасибо!
← →
DenK_vrtz (2003-07-08 16:17) [1]У тебя декартово произведение получилось в запросе.
Таблицы то связывать надо!
← →
Sensor (2003-07-08 16:18) [2]Связывать? Слушай, а подробнее можешь? Я с базами работаю вторую неделю =) А с работы выгнать могут. Ну или хотя бы опиши че зделать нада
← →
stone (2003-07-08 16:20) [3]
> Sensor (08.07.03 16:18
ты полный текст запроса приведи
← →
DenK_vrtz (2003-07-08 16:21) [4]И структуру таблиц!
← →
Johnmen (2003-07-08 16:24) [5]>Sensor (08.07.03 16:18)
А кем работаешь ?
← →
Sensor (2003-07-08 16:24) [6]Что бы выбрать нужные колонки, я использовал SQL Builder, слишком уж много атм колонок писать вручную, ну вот что у мя за запрос получился:
SELECT Dbo_baza.RN, Dbo_baza.MG, Dbo_baza.NA, Dbo_baza.GP, Dbo_baza.QGVS, Dbo_baza.QOTO, Dbo_baza.QVEN, Dbo_baza.QTEX, Dbo_baza.GNAG, Dbo_baza.QPLO, Dbo_baza.QSEL, Dbo_baza.PROCCTP, Dbo_baza.PROCGP, Dbo_baza.PRLG, Dbo_baza.TARO, Dbo_baza.Q, Dbo_baza.HH1, Dbo_baza.HH2, Dbo_baza.HH3, Dbo_baza.HH4, Dbo_baza.HH5, Dbo_baza.HH6, Dbo_baza.HH7, Dbo_baza.HH8, Dbo_baza.BGI, Dbo_baza.AOKR, Dbo_baza.KP, Dbo_baza.MOKR, Dbo_baza.JIL, Dbo_baza.PRAS, Dbo_baza.QPLON, Dbo_baza.TCO, Dbo_baza.PRB, Dbo_baza.PROCNEW, Dbo_baza.KAPA, Dbo_baza.TC, Dbo_baza.TC1, Dbo_baza.TC2, Dbo_baza.QOT5, Dbo_baza.POT, Dbo_baza.TAROTC, Dbo_baza.TS1, Dbo_baza.MGT1, Dbo_baza.TS2, Dbo_baza.MGT2, Dbo_baza.TS3, Dbo_baza.MGT3, Dbo_baza.TS4, Dbo_baza.MGT4, Dbo_baza.TS5, Dbo_baza.MGT5, Dbo_baza.TS6, Dbo_baza.MGT6, Dbo_baza.TS7, Dbo_baza.MGT7, Dbo_baza.TS8, Dbo_baza.MGT8, Dbo_baza.TS9, Dbo_baza.MGT9, Dbo_baza.TS10, Dbo_baza.MGT10, Dbo_baza.TS11, Dbo_baza.MGT11, Dbo_baza.TS12, Dbo_baza.MGT12, Dbo_baza.H11, Dbo_baza.H10, Dbo_baza.H12, Dbo_baza.NDOG, Dbo_baza.LGT1999, Dbo_baza.LGT2000, Dbo_baza.LGT2001, Dbo_baza.PRS, Dbo_baza.DOV, Dbo_baza.PRVP, Dbo_dolgi.NDOG, Dbo_dolgi.NAM, Dbo_dolgi.RNF, Dbo_dolgi.PR1, Dbo_dolgi.KOD, Dbo_dolgi.KODAO, Dbo_dolgi.PR, Dbo_dolgi.ADRFIZ, Dbo_dolgi.NUBED, Dbo_dolgi.DUBED, Dbo_dolgi.DPUBED, Dbo_dolgi.NPRET, Dbo_dolgi.DPRET, Dbo_dolgi.DPPRET, Dbo_dolgi.NISKA, Dbo_dolgi.DISKA, Dbo_dolgi.DPISKA, Dbo_dolgi.PRIM, Dbo_dolgi.SPIS, Dbo_dolgi.OPL, Dbo_dolgi.BANKROT, Dbo_dolgi.PRSP, Dbo_dolgi.PRUB
FROM dbo.BAZA Dbo_baza, dbo.DOLGI Dbo_dolgi
← →
Sensor (2003-07-08 16:25) [7]Johnmen, это имеет значение? Кем я работаю? =)
← →
Виталий (Украина) (2003-07-08 16:29) [8]Вообще то Select Distinct from ... надо-бы
← →
Johnmen (2003-07-08 16:30) [9]>Sensor (08.07.03 16:25)
Конечно ! Если программером, то есть небольшой шанс, что не выгонят. Если дворником - лучше сам уходи, не жди...
:))))))))))
← →
stone (2003-07-08 16:32) [10]
> FROM dbo.BAZA Dbo_baza, dbo.DOLGI Dbo_dolgi
вместо этого следует писать
FROM dbo.BAZA Dbo_baza INNER JOIN dbo.DOLGI Dbo_dolgi ON а тут поля по которым таблицы вяжутся
← →
Sensor (2003-07-08 16:33) [11]толку-то, всеравно постоянно виснет.
Вощем лана, допустим неизвестно че делать =) тогда может кто-нить подскажет вообще как мне здлеать это: выбрать из двух (и более) таблиц нужные колонки и запихнуть их в DBGrid1
Не прибегая к TQuery ?
← →
Sensor (2003-07-08 16:33) [12]Johnmen 8======э
← →
Fiend (2003-07-08 16:47) [13]то Sensor:
вообщето конечно неплохобы книжку открыть и прочесть, ну или хотя бы почитать справку по Local SQL от Борланда.
select поля_через_запятую
from табицы_через_запятую
where условие
либо через JOIN как уже раньше написали. Что еще нужно то!
И не думай что за тебя кто то напишет! Надо сначала самому чему то научиться. Здесь не бесплатные курсы для чайников
← →
Fiend (2003-07-08 16:50) [14]да, кстати забыл добавить, что "виснет" как ты выражаешься, не от MS SQL и не от TQuery, а от того что результат запроса состоит из множества строк которій возможно несколько десятков мегабайт весит. Так вот оно не виснет, а грузит их на клиента
← →
Sensor (2003-07-08 17:03) [15]=) 10х
← →
Дмитрий Мыльников (2003-07-08 17:25) [16]Ага, ты свой вопрос и на www.sql.ru повесил :)
Короче, я думаю, что есть какое-то поле (или группа полей) которые и в таблице BAZA, и в таблице DOLGI хранят одну и туже информацию. Это называется "поля связи". Вряд ли тебе нужно все поля из превой таблицы соединять с первой записью из второй и т.д. Так?
А раз так, то добавить условие, которое будет эти записи между собой соединять, то есть where или join
Должно быть что-то типа
select *
from BAZA,DOLGI
where BAZA.RN=DOLGI.RNF
если полей в ключе несколько, то объединяешь их через and
...
where BAZA.RN=DOLGI.RNF and BAZA.MG=DOLGI.PR1
(я поля наугад из твоего прмера выбрал, а что-там на самом деле должно стоять смотри сам по струткуре данных).
И вообще, прежде чем разрабатывать структуру данных, полезно книжки по теории СУБД поятиать, про нормализованные фомры и т.д. :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c