Текущий архив: 2004.07.18;
Скачать: CL | DM;
Вниз
MS SQL и mySQL - глюки Найти похожие ветки
← →
Johnmen © (2004-06-22 12:26) [40]Так. Ещё дальше...
Что такое ADQ_my ? И его параметры.
← →
Fishka (2004-06-22 12:37) [41]Johnmen © (22.06.04 12:26) [40]
Все по умолчанию. Было рассмотрено 2 варианта:
1.Заполнено только Connection (причем было 2 варианта: AdoConnection через ODBC и в нем Use data source name или Use Connection String).
2.Заполнено только ConnectionString (причем было 2 варианта: Use data source name или Use Connection String).
Но все бесполезно : глюки остались.
← →
Johnmen © (2004-06-22 12:42) [42]>Fishka (22.06.04 12:37) [41]
Тихо, сам с собою ? :)
А впрочем мне пофигу. Ведь это тебе надо, а не мне...
← →
Fishka (2004-06-22 12:51) [43]Johnmen © (22.06.04 12:42) [42]
Вроде как дан ответ на вопрос:
ADQ_my = ADOQUERY, в котором все по умолчанию, кроме Connection или ConnectionString.
Я жду помощи. И это нужно мне. Извините, пожалуйста, если что не так в моем ответе.
← →
Johnmen © (2004-06-22 12:56) [44]Т.е. имеем
ADQ_my.Connection указывает на ADOConnection, строка коннекта которого есть коннект к mySQL, и этот коннект проходит.
Так выполняется ли запрос в ADQ_my ?
← →
Fishka (2004-06-22 13:01) [45]Да. Но даже если его как бы нет (есть строка ADQ_my.SQL.Add("SELECT * FROM own where id_own<0"), но Open я не делаю), то все равно глюки дальше.
← →
Курдль © (2004-06-22 13:11) [46]Интересненько...
А может быть приведете участок кода, где дебаггер по ошибке останавливает? (Только, плз, с тэгами "код", если много).
← →
bushmen © (2004-06-22 13:11) [47]>то все равно глюки дальше.
А код дальше какой?
← →
Fishka (2004-06-22 13:19) [48]Курдль © (22.06.04 13:11) [46]
Ошибок нет, но неверно формируются массивы и некорректно заполняется одна из таблиц MSSQL.
bushmen © (22.06.04 13:11) [47]
Мне кажется, дело не в коде, а в свойствах ADOQuery (ADQ_my), который используется для запроса к таблицам mySQL.
См. Fishka (22.06.04 09:06) [12]
3. Неверны свойства ADOQuery (ADQ_my), а именно ...
← →
bushmen © (2004-06-22 13:21) [49]>неверно формируются массивы и некорректно заполняется одна из таблиц MSSQL.
Приведи коды заполнения таблицы и массива
← →
Fishka (2004-06-22 13:26) [50]bushmen © (22.06.04 13:21) [49]
коды заполнения таблицы - в одной транзакции заполняется порядка 20 таблиц, каждая из которых заполняется несколькими записями (в цикле).
Но проблема не в этом (на мой взгляд).
Ведь если нет ADQ_my к mySQL - то все прекрасно!
← →
bushmen © (2004-06-22 13:29) [51]>в одной транзакции заполняется порядка 20 таблиц, каждая из которых заполняется несколькими записями (в цикле).
Вот и привиди этот код
← →
Ega23 © (2004-06-22 13:52) [52]Fishka (22.06.04 13:26) [50]
ДА ЧТО Ж ИЗ ТЕБЯ КЛЕЩАМИ ВСЁ ТЯНУТЬ ПРИХОДИТСЯ!!!! КОМУ ЭТО НАДО: НАМ ИЛИ ТЕБЕ???
← →
bushmen © (2004-06-22 14:06) [53]Это напоминает анекдот:
- Найдите мне, пожалуйста, документ.
- Какой?
- Не могу сказать, т.к. он секретный
← →
Плохиш © (2004-06-22 14:16) [54]
> Ega23 © (22.06.04 13:52) [52]
Спокойно, товарищи. Это идёт тестирование телепатов :-)
← →
Fishka (2004-06-22 14:39) [55]Пытаюсь привести, но оказалось, что ограничение на 7000 ( с чем-то) символов. И все мое сообщение пропало!
while .....
Area.Clear;
for j:=0 to length(Area_Code)-1 do
Attrib_rebro(Area_Code[j],Area_Delta[j],lati,long,Area_coord[j],Area);
//проверяем и для некоторых записей, для которых был поиск в таблице mySQL неверно количество Area.Count (д.б. 1, а оно больше), но для первой записи всегда все верно
...
ADQ_my.Close;
ADQ_my.SQL.Clear;
ADQ_my.SQL.Add("SELECT * FROM own where id_own<0");
try
ADQ_my.Open;
except
end;
....
ADQ.SQL.Add("begin transaction T1;");
ADQ.SQL.Add("insert ....");
......
//вставка в 20 таблиц - ошибок нет
//если массив Area неверно сформирован, то и в таблице некорректные записи
ADQ.SQL.Add(" COMMIT TRANSACTION T1;");
ADQ.ExecSQL;
end;
← →
Fishka (2004-06-22 14:43) [56]
procedure TForm1.Attrib_rebro(kod_z,delta:Integer;lat,lon:String;trebro:array of tochka;Attr:TstringList);
var tt_temp,tt_m,tt_s : tochka;
ii,jj,count_s: Integer;
attrib,attrib_r : Boolean;
a1,b1,c1,a2,b2,c2 : Real;
begin
tt_temp.sh:=StrToFloat(lat);
tt_temp.dl:=StrToFloat(lon);
if (tt_temp.dl<0) then tt_temp.dl:=tt_temp.dl+delta;
for jj:=0 to length(trebro)-2 do
begin
//ä.âñåãäà ïîëó÷èòü êîýôôèöèåíòû
Midd_r(tt_temp,trebro[jj],trebro[jj+1],tt_m,a2,b2,c2);
count_s:=0;
for ii:=0 to length(trebro)-2 do
begin
attrib:=False;
attrib_r:=False;
//íàéäåì êîýôôèöèåíòû
Koef_abc(trebro[ii],trebro[ii+1],a1,b1,c1);
//íàõîäèì ïåðåñå÷åíèå ðåáðà è ïðÿìîé, ñîåä. òî÷êó ñ ñåðåäèíîé ðåáðà
if (a1*b2-a2*b1<>0) and (a1*b2-a2*b1<>0) then
begin
tt_s.sh:=(c1*a2-c2*a1)/(a1*b2-a2*b1);
tt_s.dl:=(b1*c2-b2*c1)/(a1*b2-a2*b1);
// ShowMessage("Òî÷êà ïåðåñå÷åíèÿ "+FloatToStr(tt_s.sh)+" "+FloatToStr(tt_s.dl));
// ïðîâåðèì íå ÿâëÿåòñÿ ëè òî÷êà âåðøèíîé
if ((tt_s.sh=trebro[ii].sh) and (tt_s.dl=trebro[ii].dl)) or
((tt_s.sh=trebro[ii+1].sh) and (tt_s.dl=trebro[ii+1].dl)) then
begin
//òî÷êà ïåðåñå÷åíèÿ ÿâëÿåòñÿ âåðøèíîé ðåáðà - íàäî ïðîâåñòè ïðÿìóþ ê äðóãîìó ðåáðó
//è íà÷àòü ïðîâåðêó ñ ïåðâîãî ðåáðà
break;
end
else
begin
attrib:=False;
//ïðîâåðèì ïðèíàäëåæíîñòü ëó÷ó, ïðîâåäåííîìó èç òî÷êè ê ðåáðó
if (tt_temp.sh<=tt_m.sh) and (tt_temp.dl<=tt_m.dl) and
(tt_temp.sh<=tt_s.sh) and (tt_temp.dl<=tt_s.dl) then
attrib:=True;
if (tt_temp.sh>=tt_m.sh) and (tt_temp.dl<=tt_m.dl) and
(tt_temp.sh>=tt_s.sh) and (tt_temp.dl<=tt_s.dl) then
attrib:=True;
if (tt_temp.sh>=tt_m.sh) and (tt_temp.dl>=tt_m.dl) and
(tt_temp.sh>=tt_s.sh) and (tt_temp.dl>=tt_s.dl) then
attrib:=True;
if (tt_temp.sh<=tt_m.sh) and (tt_temp.dl>=tt_m.dl) and
(tt_temp.sh<=tt_s.sh) and (tt_temp.dl>=tt_s.dl) then
attrib:=True;
//ïðîâåðèì ïðèíàäëåæíîñòü ðåáðó
if attrib then
begin
if (trebro[ii].sh<=trebro[ii+1].sh) then
begin
if (trebro[ii].dl<=trebro[ii+1].dl) then
begin
if (tt_s.sh>=trebro[ii].sh) and (tt_s.sh<=trebro[ii+1].sh) and
(tt_s.dl>=trebro[ii].dl) and (tt_s.dl<=trebro[ii+1].dl) then
begin
count_s:=count_s+1;
attrib_r:=True;
end;
end
else
begin
if (tt_s.sh>=trebro[ii].sh) and (tt_s.sh<=trebro[ii+1].sh) and
(tt_s.dl<=trebro[ii].dl) and (tt_s.dl>=trebro[ii+1].dl) then
begin
count_s:=count_s+1;
attrib_r:=True;
end;
end;
end
else
begin
if (trebro[ii].dl<=trebro[ii+1].dl) then
begin
if (tt_s.sh<=trebro[ii].sh) and (tt_s.sh>=trebro[ii+1].sh) and
(tt_s.dl>=trebro[ii].dl) and (tt_s.dl<=trebro[ii+1].dl) then
begin
count_s:=count_s+1;
attrib_r:=True;
end;
end
else
begin
if (tt_s.sh<=trebro[ii].sh) and (tt_s.sh>=trebro[ii+1].sh) and
(tt_s.dl<=trebro[ii].dl) and (tt_s.dl>=trebro[ii+1].dl) then
begin
count_s:=count_s+1;
attrib_r:=True;
end;
end;
end;
//åñëè ðàññìàòðèâàåìàÿ òî÷êà è åñòü òî÷êà ïåðåñå÷åíèÿ ñ ðåáðîì
if (abs(tt_s.sh-tt_temp.sh)<0.001) and (abs(tt_s.dl-tt_temp.dl)<0.001) and (Attrib_r=True) then
begin
Attr.Add(IntToStr(kod_z));
count_s:=-1;
break;
end;
end;{if attrib}
end;{åñëè òî÷êà íå íà ðåáðå }
end;{(a1*b2-a2*b1<>0) and (a1*b2-a2*b1<>0)}
end;{for i}
if (count_s=-1) then break;
if (ii=length(trebro)-1) then break;
end;{for j}
if ((count_s mod 2)<>0) and (count_s>-1)
then Attr.Add(IntToStr(kod_z));
end;
← →
bushmen © (2004-06-22 14:45) [57]>для некоторых записей, для которых был поиск в таблице mySQL неверно количество Area.Count
Что-то я не вижу поиска в базе mysql
← →
Fishka (2004-06-22 14:45) [58]
function TForm1.Koef_abc(tt1,tt2 : tochka; var a,b,c : Real): Boolean;
begin
if (tt2.sh=tt1.sh) and (tt2.dl=tt1.dl) then
begin
result:=False;
exit;
end;
// if (tt2.sh<>tt1.sh) then
if (abs(tt2.sh-tt1.sh)>0.0001) then
begin
// if (tt2.dl<>tt1.dl) then
if (abs(tt2.dl-tt1.dl)>0.001) then
begin
try
a:=0-1/(tt2.dl-tt1.dl);
b:=1/(tt2.sh-tt1.sh);
c:=tt1.dl/(tt2.dl-tt1.dl)-tt1.sh/(tt2.sh-tt1.sh);
except
ShowMessage(FloatToStr(a));
end;
end
else
begin
a:=1;
b:=0;
c:=0-tt1.dl;
end;
end
else
begin
a:=0;
b:=1;
c:=0-tt1.sh;
end;
result:=True;
end;
function TForm1.Midd_r(tt,tt1,tt2 : tochka; var tt_mid:tochka; var a_m,b_m,c_m : Real): Boolean;
begin
//íàéäåì êîîðäèíàòû ñåðåäèíû ðåáðà
tt_mid.sh:=(tt1.sh+tt2.sh)/2;
tt_mid.dl:=(tt1.dl+tt2.dl)/2;
//1-ÿ òî÷êà - ïðîâåðÿåìàÿ, 2-ÿ òî÷êà - ñåðåäèíà ðåáðà - èùåì êîýôô. â óð-íèè ïðÿìîé
if Koef_abc(tt,tt_mid,a_m,b_m,c_m)=False then result:=False;
end;
И чем это все может помочь???????????????
← →
Fishka (2004-06-22 14:49) [59]А и поиск поиск не нужен. Простейший запрос к mySQL, и неверно определяется массив Area.
Дело не в запросе,
а см. См. Fishka (22.06.04 09:06) [12] и
3. Неверны свойства ADOQuery (ADQ_my), а именно ...
У меня нет опыта работы с mySQL.
← →
Sandman25 © (2004-06-22 14:55) [60]Если используется MSSQL, а не MySQL, то ADM указывает на ту же БД, что и ADQ, в которой идет транзакция? Возможно, дело в том, что MSSQL "видит" транзакцию, которую не видит MySQL.
← →
Andrick © (2004-06-22 14:58) [61]Не знаю насчет MS SQL, а вот MySQL возвращает в ответ на запрос массив из PChar, а уж никак не String (насколько я понял из всего написанного)
← →
Fishka (2004-06-22 15:01) [62]Sandman25 © (22.06.04 14:55) [60]
Если используется MSSQL, а не MySQL, то ADM указывает на ту же БД, что и ADQ, в которой идет транзакция - да.
Возможно, дело в том, что MSSQL "видит" транзакцию, которую не видит MySQL - а при чем тут неверное формирование массива Area, из-за которого мои проблемы?????????
← →
Sandman25 © (2004-06-22 15:03) [63][62] Fishka (22.06.04 15:01)
Если при формировании "массива" используются результаты запроса через другое соединение, то массив получится другой. Вы же не зря нам писали про "поиск" в MySQL... Или зря?
Попробуйте указать ADM на MSSQL, но в другую БД, и сравните результаты
← →
Andrick © (2004-06-22 15:07) [64]Кстати, ошибка происходит при одновременно открытых и MS SQL, и MySQL, - или нет? Если при одновременно, то Песочный (привет ;))) прав
← →
Sandman25 © (2004-06-22 15:10) [65][64] Andrick © (22.06.04 15:07)
Какой еще песочный... Изучайте американский фольклор, молодой человек :)
PS. Я же не называю Вас "и стог" :)
← →
Fishka (2004-06-22 15:11) [66]Andrick © (22.06.04 14:58) [61]
А я и не использую результат запроса.
Sandman25 © (22.06.04 15:03) [63]
Если при формировании "массива" используются результаты запроса через другое соединение, то массив получится другой. Вы же не зря нам писали про "поиск" в MySQL... Или зря? - Есть поиск, нет его - все равно глюки одни и те же.
Попробуйте указать ADM на MSSQL, но в другую БД, и сравните результаты - о результате сообщу через 5-10 мин.
← →
Andrick © (2004-06-22 15:15) [67]Sandman25 © (22.06.04 15:10) [65]
Предпочитаю программирование
← →
Sandman25 © (2004-06-22 15:20) [68][67] Andrick © (22.06.04 15:15)
И это правильно.
Извините за неудачную шутку.
← →
Fishka (2004-06-22 15:24) [69]Andrick © (22.06.04 15:07) [64]
ошибка происходит при одновременно открытых и MS SQL, и MySQL - да, есть такой момент.
И что мне делать? Закрывать? А почему?
← →
Sandman25 © (2004-06-22 15:24) [70]>Есть поиск, нет его - все равно глюки одни и те же.
Допустим, по алгоритму происходит запись "1", если поле найдено в таблице. Тогда в случае использования MSSQL запись будет найдена и 1 добавится, а в случае использования MySQL запись не будет найдена и поэтому 1 не добавится. При этом не важно, был ли выполнен запрос в MySQL.
← →
Andrick © (2004-06-22 15:41) [71]Во-первых, если ты не используешь результаты запросов MySQL - на хрена пользоваться MySQL?
Во-вторых, проверь, возникает ли ошибка, если отключить Ms SQL. Если возникает, то дело совсем не в бобине.
To Sandman25 > Я не обижаюсь.
← →
Andrick © (2004-06-22 15:45) [72]Ладно, мужики, пошел я от вас. Завтра загляну - посмотрю, как дела
← →
Fishka (2004-06-22 15:45) [73]Fishka (22.06.04 15:24) [69]
Немного не так. И при закрытом mySQL те же глюки. Даже если не делать Open, то те же глюки.
Но если просто закомментировать строку:
ADQ_my.SQL.Add("SELECT * FROM own where id_own<0");
то все нормально.
Sandman25 © (22.06.04 15:24) [70]
Мне не совсем понятно, ведь фактически я ничего не ищу..... И результатом запроса не пользуюсь......
← →
Andrick © (2004-06-22 15:45) [74]Ладно, мужики, пошел я от вас. Завтра загляну - посмотрю, как дела
← →
Sandman25 © (2004-06-22 15:48) [75][73] Fishka (22.06.04 15:45)
Я понимаю, ну а что еще можно придумать... Закрывайте неиспользуемый Connection, тем более, что это разумно.
← →
Andrick © (2004-06-22 15:49) [76]Комп конкретно глючит. А собака, скорее всего, порылась в том, что дельфин, прежде чем отправить запрос базе, всячески его мнет и коряжит, чтоб, значит, он лучше был. Попробуй поставить самым последним символом запроса #0 - мне помогло
← →
Fishka (2004-06-22 15:53) [77]Andrick © (22.06.04 15:41) [71]
1. Был написан запрос к mySQL - и как результат : программа отработала некорректно. Помучавшись неделю, мною был сделан вывод: дело не в тексте ( кстати отлаженном) запроса к mySQL, а просто в его наличии. И даже неважно, делаю я Open или нет. Естественно, после нахождения причины ошибки я восстановлю текст запроса к таблицам mySQL.
2.Если отключить MsSQL или наоборот поменять Connection (т.е. поставить Connection к MSSQL вместо mySQL), то все нормально.
Конечно, выход есть всегда: например, качнуть данные из mySQL во временную таблицу на MSSQL и не пользоваться запросам к mySQL.
Но мне кажется, что это очень-очень нерационально (мягко говоря).
← →
Andrick © (2004-06-22 15:56) [78]Попробуй все-таки поставить нулевой символ. В дельфине с мускулем я без него запросы не составляю.
Ладно, пока. Завтра зайду с утречка - сообщи результат
← →
Fishka (2004-06-22 16:05) [79]Andrick © (22.06.04 15:56) [78]
Попробуй все-таки поставить нулевой символ. В дельфине с мускулем я без него запросы не составляю -
Непонятно, что и куда поставить? У меня нет опыта работы с mySQL.
← →
Sandman25 © (2004-06-22 16:06) [80][79] Fishka (22.06.04 16:05)
SQL.Add("select ... from table1"#0);
Страницы: 1 2 3 вся ветка
Текущий архив: 2004.07.18;
Скачать: CL | DM;
Память: 0.66 MB
Время: 0.039 c