Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

BDE, базы данных   Найти похожие ветки 

 
Olsab   (2004-03-23 16:09) [0]

Уважаемые Мастера!
D5,DBASE, BDE  
 Есть SQL-запрос, который связывает 9 файлов. В зависимости от условий ограничения, выводится разное кол-во записей. На небольших таблицах запрос работает без замечаний, а при увеличении кол-ва записей в таблицах, он перестает работать, реагирует на кол-во выводимых полей и на кол-во связаных таблиц. Выдает ошибку
Access violation at address 00000000 read address 00000000 .
Создается впечатление, что переполняется какой-то буфер. Может кто сталкивался с такой проблемой?


 
Alex_Bredin ©   (2004-03-23 16:11) [1]

такая ошибка не появляется от увеличения количества записей


 
olsab   (2004-03-23 16:17) [2]

Грешить больше не на что. Запрос выполнялся на проверенных данных(которые были тиражируемые, чтобы достичь большего кол-ва записей), выполнялся просто в SQL-Explorer


 
Alex_Bredin ©   (2004-03-23 16:21) [3]

приведите текст запроса


 
olsab   (2004-03-23 16:23) [4]

Используется локальный SQL не FOXPRO


 
olsab   (2004-03-23 16:27) [5]

SELECT Bxd.NK, Sp.NAME, Bxd.DAR,Vid.NAME+" "+ Bxd.NOM  vid,
Bxd.DAI, Bxd.ORG, Bxd.OTPR, City.NAME city, Bxd.SOD, Bxd.DAV, Bxd.NKS,
Bxd.KONT, Bxd.YE, Bxd.KVID, Bxd.NOM, Bxd.ISXN, Bxd.KSP, Bxd.KCITY,
Bxd.OTM, Bxd.KKUR, Bxd.DATK, Bxd.KTEMA, Skur.NAME kur, Tema.NAME tema,
Bxd.KORG, Org.NAME org_1, Bxd.KDEL, Delo.NAME1 delo, Vid.NAME vidd
FROM "BXD.DBF" Bxd,"CITY.DBF" City,"SP.DBF" Sp,"SKUR.DBF" Skur,
 "TEMA.DBF" Tema,"ORG.DBF" Org,"DELO.DBF" Delo,
 "VID.DBF" Vid
where
   (Bxd.KCITY = City.KOD) and
   (Bxd.KVID = Vid.KOD)  and
   (Bxd.KSP = Sp.KOD)  and
   (Bxd.KKUR = Skur.KOD)  and
   (Bxd.KTEMA = Tema.KOD)  and
   (Bxd.KORG = Org.KOD)  and
   (Bxd.KDEL = Delo.KOD)
 and bxd.otm=1
Одна таблица связывается с 7-ю справочниками для расшифровки кодов и выбираюся, например, выполненные документы(bxd.otm=1)


 
Alex_Bredin ©   (2004-03-23 16:31) [6]

используйте JOIN..ON вместо WHERE
это реакция на NULL в ключевом поле


 
olsab   (2004-03-23 16:36) [7]

В DBASE NULL нет по определению, там в незаполненные поля ставится 0, а в справочниках заведены записи с нулевым значением для того, чтобы было точное соответствие и не надо было писать LEFT OUTER JOIN.
 С INNER JOIN аналогичная ситуация - выдает ошибку


 
Alex_Bredin ©   (2004-03-23 16:50) [8]


> В DBASE NULL нет по определению, там в незаполненные поля
> ставится 0


первый раз слышу


 
Alex_Bredin ©   (2004-03-23 16:52) [9]

да у вас и с именами путаница - DELO например  и поле и таблица


 
Johnmen ©   (2004-03-23 16:54) [10]

>olsab   (23.03.04 16:27) [5]

Т.е. приведенный запрос иногда всё-таки работает ?


 
olsab   (2004-03-23 16:56) [11]

Поля Delo нет только таблица, а в списке полей это же алиасное имя, оно то особой роли не играет.


 
Alex_Bredin ©   (2004-03-23 17:04) [12]

SELECT Bxd.NK, Sp.NAME, Bxd.DAR,Vid.NAME+" "+ Bxd.NOM,
Bxd.DAI, Bxd.ORG, Bxd.OTPR, City.NAME , Bxd.SOD, Bxd.DAV, Bxd.NKS,
Bxd.KONT, Bxd.YE, Bxd.KVID, Bxd.NOM, Bxd.ISXN, Bxd.KSP, Bxd.KCITY,
Bxd.OTM, Bxd.KKUR, Bxd.DATK, Bxd.KTEMA, Skur.NAME kur, Tema.NAME ,
Bxd.KORG, Org.NAME , Bxd.KDEL, Delo.NAME1 , Vid.NAME

FROM Bxd
left join City on (Bxd.KCITY = City.KOD)
left join Vid on  (Bxd.KVID = Vid.KOD)
left join Sp on   (Bxd.KSP = Sp.KOD)  
left join Skur on (Bxd.KKUR = Skur.KOD)
left join Tema on (Bxd.KTEMA = Tema.KOD)
left join Org on  (Bxd.KORG = Org.KOD)
left join Delo on (Bxd.KDEL = Delo.KOD)

where Bxd.otm=1

уфф.
попробуйте


 
olsab   (2004-03-23 17:25) [13]

С последней версией запроса работает, но с добавлением записей в таблице до 70000, вываливается по той же ошибке.
У меня закончился инет. Спасибо


 
Alex_Bredin ©   (2004-03-23 17:32) [14]

тогда еще вариант - поменять местами поля вот так:

FROM Bxd
left join City on (City.KOD =Bxd.KCITY)
left join Vid on  (Vid.KOD = Bxd.KVID ) итп

не знаю почему, но в некотроых случаях порядок полей в условии иимеет значение



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.036 c
14-1080541211
Layner
2004-03-29 10:20
2004.04.18
Кто смотрит "Момент истины" в 20.00 по ТВЦ???


1-1080930806
hgd
2004-04-02 22:33
2004.04.18
Вопрос про процедуры


7-1076592347
BJValentine
2004-02-12 16:25
2004.04.18
Трудности с DLL


1-1080851238
Erik
2004-04-02 00:27
2004.04.18
Как присвоить bitmap из ImageList в TImage?


1-1080680996
erusto
2004-03-31 01:09
2004.04.18
Отчеты через Rave





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский