Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
//&#228;.&#226;&#241;&#229;&#227;&#228;&#224; &#239;&#238;&#235;&#243;&#247;&#232;&#242;&#252; &#234;&#238;&#253;&#244;&#244;&#232;&#246;&#232;&#229;&#237;&#242;&#251;
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;
   //&#237;&#224;&#233;&#228;&#229;&#236; &#234;&#238;&#253;&#244;&#244;&#232;&#246;&#232;&#229;&#237;&#242;&#251;
   Koef_abc(trebro[ii],trebro[ii+1],a1,b1,c1);
     //&#237;&#224;&#245;&#238;&#228;&#232;&#236; &#239;&#229;&#240;&#229;&#241;&#229;&#247;&#229;&#237;&#232;&#229; &#240;&#229;&#225;&#240;&#224; &#232; &#239;&#240;&#255;&#236;&#238;&#233;, &#241;&#238;&#229;&#228;. &#242;&#238;&#247;&#234;&#243; &#241; &#241;&#229;&#240;&#229;&#228;&#232;&#237;&#238;&#233; &#240;&#229;&#225;&#240;&#224;
    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("&#210;&#238;&#247;&#234;&#224; &#239;&#229;&#240;&#229;&#241;&#229;&#247;&#229;&#237;&#232;&#255; "+FloatToStr(tt_s.sh)+"  "+FloatToStr(tt_s.dl));
       // &#239;&#240;&#238;&#226;&#229;&#240;&#232;&#236; &#237;&#229; &#255;&#226;&#235;&#255;&#229;&#242;&#241;&#255; &#235;&#232; &#242;&#238;&#247;&#234;&#224; &#226;&#229;&#240;&#248;&#232;&#237;&#238;&#233;
       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
         //&#242;&#238;&#247;&#234;&#224; &#239;&#229;&#240;&#229;&#241;&#229;&#247;&#229;&#237;&#232;&#255; &#255;&#226;&#235;&#255;&#229;&#242;&#241;&#255; &#226;&#229;&#240;&#248;&#232;&#237;&#238;&#233; &#240;&#229;&#225;&#240;&#224; - &#237;&#224;&#228;&#238; &#239;&#240;&#238;&#226;&#229;&#241;&#242;&#232; &#239;&#240;&#255;&#236;&#243;&#254; &#234; &#228;&#240;&#243;&#227;&#238;&#236;&#243; &#240;&#229;&#225;&#240;&#243;
         //&#232; &#237;&#224;&#247;&#224;&#242;&#252; &#239;&#240;&#238;&#226;&#229;&#240;&#234;&#243; &#241; &#239;&#229;&#240;&#226;&#238;&#227;&#238; &#240;&#229;&#225;&#240;&#224;
          break;
        end
        else
        begin
         attrib:=False;
         //&#239;&#240;&#238;&#226;&#229;&#240;&#232;&#236; &#239;&#240;&#232;&#237;&#224;&#228;&#235;&#229;&#230;&#237;&#238;&#241;&#242;&#252; &#235;&#243;&#247;&#243;, &#239;&#240;&#238;&#226;&#229;&#228;&#229;&#237;&#237;&#238;&#236;&#243; &#232;&#231; &#242;&#238;&#247;&#234;&#232; &#234; &#240;&#229;&#225;&#240;&#243;
         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;
         //&#239;&#240;&#238;&#226;&#229;&#240;&#232;&#236; &#239;&#240;&#232;&#237;&#224;&#228;&#235;&#229;&#230;&#237;&#238;&#241;&#242;&#252; &#240;&#229;&#225;&#240;&#243;
         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;
         //&#229;&#241;&#235;&#232; &#240;&#224;&#241;&#241;&#236;&#224;&#242;&#240;&#232;&#226;&#224;&#229;&#236;&#224;&#255; &#242;&#238;&#247;&#234;&#224; &#232; &#229;&#241;&#242;&#252; &#242;&#238;&#247;&#234;&#224; &#239;&#229;&#240;&#229;&#241;&#229;&#247;&#229;&#237;&#232;&#255; &#241; &#240;&#229;&#225;&#240;&#238;&#236;
         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;{&#229;&#241;&#235;&#232; &#242;&#238;&#247;&#234;&#224; &#237;&#229; &#237;&#224; &#240;&#229;&#225;&#240;&#229; }
   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
//&#237;&#224;&#233;&#228;&#229;&#236; &#234;&#238;&#238;&#240;&#228;&#232;&#237;&#224;&#242;&#251; &#241;&#229;&#240;&#229;&#228;&#232;&#237;&#251; &#240;&#229;&#225;&#240;&#224;
tt_mid.sh:=(tt1.sh+tt2.sh)/2;
tt_mid.dl:=(tt1.dl+tt2.dl)/2;
//1-&#255; &#242;&#238;&#247;&#234;&#224; - &#239;&#240;&#238;&#226;&#229;&#240;&#255;&#229;&#236;&#224;&#255;, 2-&#255; &#242;&#238;&#247;&#234;&#224; - &#241;&#229;&#240;&#229;&#228;&#232;&#237;&#224; &#240;&#229;&#225;&#240;&#224; - &#232;&#249;&#229;&#236; &#234;&#238;&#253;&#244;&#244;. &#226; &#243;&#240;-&#237;&#232;&#232; &#239;&#240;&#255;&#236;&#238;&#233;
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
3-1087770767
Stalker
2004-06-21 02:32
2004.07.18
InterBase, даты....


1-1089151257
dido
2004-07-07 02:00
2004.07.18
Edit не принимает цифр


3-1087994111
Николай
2004-06-23 16:35
2004.07.18
Сохранение изменений


1-1089180687
pesh
2004-07-07 10:11
2004.07.18
Excel: ссылка на открытый документ


1-1088661794
AndrewK
2004-07-01 10:03
2004.07.18
Как можно сделать подключаемые модули к программе