Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.49 MB
Время: 0.008 c
3-100551
Andreyki
2003-07-10 18:03
2003.07.31
Авторизация в БД


14-100901
mika
2003-07-10 11:50
2003.07.31
---|Ветка была без названия|---


3-100599
denis555
2003-07-09 12:17
2003.07.31
логин BDE в Delhi4


14-100968
Igor__
2003-07-14 19:30
2003.07.31
Зачем нужна Стеганография


14-100896
clickmaker
2003-07-11 20:04
2003.07.31
Офис 2000 и ХР не ставится на 2000 сервак (!!!)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский