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

Вниз

При Open у TQuery c RequestLive = True получаю AV&#133   Найти похожие ветки 

 
Kolan ©   (2008-01-09 18:18) [0]

Такой код на строке Open вызывает AV по адресу 00000000.

function TPeriodDataAccessService.GetApprovedMonthPeriods: TDataSet;
var
 Query: TQuery;
begin
 Result := nil;
 Query := TQuery.Create(nil);
 {Iano?ieou Query}
 Query.RequestLive := True;
 try
   with Query do
   begin
     DatabaseName := "db";
     SQL.Clear;
     SQL.Add("SELECT cdmes AS [Ianyo], utvper AS [Oaenoiaue aea(noa?ue)], daten AS [C], datev AS [Ii] FROM PAKETDOC ");
     Open;
   end;
 except
   Query.Close;
   Query.Free;
 end;
 Result := Query;
end;


Почему? Как исправить?


 
clickmaker ©   (2008-01-09 18:23) [1]


> Kolan ©   (09.01.08 18:18)

отладчиком в Open заходил?


 
Правильный_Вася   (2008-01-09 18:40) [2]

а если без AS


 
Johnmen ©   (2008-01-09 21:31) [3]


> Kolan ©   (09.01.08 18:18) 

Что такое TPeriodDataAccessService?


 
Lexer ©   (2008-01-10 11:41) [4]

Если при RequestLive = False ошибок нет, то скорее всего ядро bde не понимает такой синтаксис, т.к. при RL = True запрос выполняет само bde а не сервер. Посмотри будет ли ошибка при элементарном запросе.


 
Правильный_Вася   (2008-01-10 12:09) [5]


> при RL = True запрос выполняет само bde а не сервер

во-1 про сервер или не сервер ни слова не сказано
во-2 кто выполняет запрос определяется настройкой драйвера в БДЕ
SQLQRYMODE specifies the mode for handling queries to SQL data


 
Lexer ©   (2008-01-10 12:45) [6]

>Правильный_Вася   (10.01.08 12:09)

сказано "c RequestLive = True получаю AV", так что это только мои предположения что SQLQUERYMODE установлен не LOCAL


 
Правильный_Вася   (2008-01-10 12:49) [7]


> это только мои предположения

позновато ты их озвучил, когда носом ткнули в писаную тобой фигню


 
Kolan ©   (2008-01-11 09:47) [8]

> отладчиком в Open заходил?

Нет. Шас. Так&#133

Заходим сюда:
OpenCursor;

Теперь сюда:
procedure TDBDataSet.OpenCursor(InfoQuery: Boolean);
begin
 SetDBFlag(dbfOpened, True);
 inherited OpenCursor(InfoQuery);
 SetUpdateMode(FUpdateMode);
 if Database.IsSQLBased then
   SetupAutoRefresh
end;



procedure TBDEDataSet.OpenCursor(InfoQuery: Boolean);
var
 CursorLocale: TLocale;
begin
 if FHandle = nil then
   FHandle := CreateHandle;
тут АВ.

а если без AS

То работает.

Что такое TPeriodDataAccessService?
Синглетон в котором находятся методы доступа к БД.

ЗЫ
 Сорри за молчание&#133


 
Kolan ©   (2008-01-11 10:01) [9]

Победил так:

SQL.Add("SELECT cdmes, utvper, daten, datev  FROM PAKETDOC ");
Open;
FieldByName("cdmes").DisplayLabel := "Месяц";
FieldByName("utvper").DisplayLabel := "Текстовый вид(старый)";
FieldByName("daten").DisplayLabel := "C";
FieldByName("datev").DisplayLabel := "По";


 
clickmaker ©   (2008-01-11 10:56) [10]


> [9] Kolan ©   (11.01.08 10:01)

так, кстати, лучше. Потому как можно в ресурсы всю локализацию вынести


 
sniknik ©   (2008-01-11 11:07) [11]

не указана база... но по компонентам вроде BDE, а в BDE вроде скобки [] не приняты, а приняты кавычки "".
поздновато конечно, но проверь с ними SELECT cdmes AS "Ianyo", utvper AS .... так же само.
(естественно в рабочем варианте оставить решение из [9], либо аналог (например в гриде "титлы" с нужными именами сделать, тогда и присваивать после запроса ничего не надо))


 
clickmaker ©   (2008-01-11 11:12) [12]

в D7/BDE/MSSQL, кстати, такой код выводит "Table is read only", но не AV


 
Kolan ©   (2008-01-11 11:15) [13]


> но проверь с ними SELECT cdmes AS «Ianyo

SQL.Add("SELECT cdmes AS „Месяц“, utvper AS „Текстовый вид(старый)“, daten AS „C“, datev AS „По“ FROM PAKETDOC ");

тожесамое AV.


 
sniknik ©   (2008-01-11 11:27) [14]

может дело в самих алиасах? значениях.
если
SQL.Add("SELECT cdmes AS "Field1", utvper AS "Field2", daten AS "Field3", datev AS "Field4" FROM PAKETDOC");
?
и вдруг пройдет, восстанавливай по одному из оригиналов.
просто любопытно в чем дело.


 
Правильный_Вася   (2008-01-11 11:29) [15]


> Kolan ©   (11.01.08 11:15) [13]

какие-то кавычки у тебя жесткие


 
Kolan ©   (2008-01-11 11:32) [16]

> какие-то кавычки у тебя жесткие

:)

> просто любопытно в чем дело.

Шас проверю.


 
Kolan ©   (2008-01-11 11:50) [17]

Тоже ав в том же месте&#133


 
clickmaker ©   (2008-01-11 11:51) [18]


> [16] Kolan ©   (11.01.08 11:32)

ты пройди дальше в CreateHandle, может, что и прояснится


 
sniknik ©   (2008-01-11 11:59) [19]

хм... а у тебя случаем не созданы поля в "десигне" по оригинальным названиям? после меняешь имена, старые поля остались с несуществующими ссылками, но гдето есть обращение вот и AV...
а вернул старые названия и все встало на свои места, ссылки валидны...


 
clickmaker ©   (2008-01-11 12:05) [20]


> [19] sniknik ©   (11.01.08 11:59)
> хм... а у тебя случаем не созданы поля в "десигне"

Query := TQuery.Create(nil);
:)


 
sniknik ©   (2008-01-11 12:16) [21]

> Query := TQuery.Create(nil);
> :)
точно блин... ;(

ну тогда сегодня день чудес... проверил сам запрос для BDE -> MSSQL, никаких AV от смены названия... и [] и "" проходят "только в путь"
и RequestLive  не влияет...

чтото там не то. тип базы видать такой, секретный.

еще вариант... основан на странных кавычках в [13]
а не умудряешся ли ты посылать запрос в юникоде? /другой кодировке отличной от win-1251.


 
Kolan ©   (2008-01-12 15:05) [22]

> тип базы видать такой, секретный.

MSSQL Server 2000


> ты пройди дальше в CreateHandle

В ПН продолжу&#133


 
Loginov Dmitry ©   (2008-01-12 16:18) [23]

А если так переписать:

function TPeriodDataAccessService.GetApprovedMonthPeriods: TDataSet;
var
Query: TQuery;
begin
Query := TQuery.Create(nil);
try
  Query.RequestLive := True;
  with Query do
  begin
    DatabaseName := "db";
    SQL.Text := "SELECT cdmes as t."Ianyo", utvper as t."Oaenoiaue aea(noa?ue)", daten as t."C", datev as t."Ii" FROM PAKETDOC";
    Open;
  end;
except    
  Query.Free;
  raise;
end;
Result := Query;
end;



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

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

Наверх





Память: 0.5 MB
Время: 0.006 c
15-1209965036
Lip
2008-05-05 09:23
2008.06.15
не отображается переносной жесткий диск


2-1211457981
NieL
2008-05-22 16:06
2008.06.15
почему для некоторых EXE не получается извлечь инфу


15-1209550659
palva
2008-04-30 14:17
2008.06.15
Начнут конфисковывать


15-1209962523
Илья Корстин
2008-05-05 08:42
2008.06.15
Синхронизация двух Outlook


2-1211282441
StiTch
2008-05-20 15:20
2008.06.15
Формула





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