Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.18;
Скачать: CL | DM;

Вниз

MS SQL и mySQL - глюки   Найти похожие ветки 

 
Fishka   (2004-06-21 15:56) [0]

В проекте ADoConnection к MS SQL (ADC), ADOQuery (ADQ),
ADoConnection к MySQL (ADM), ADOQuery (ADQ_my).
Программа работает неверно (некорректно заполняются
TstringList-ы). Драйвер mySQL 3.51.
Меняю в строке ConnectionString в ADM на базу MS SQL - и все нормально.

Наверно, мало информации, но все же в чем проблема и как с этим бороться?


 
Ega23 ©   (2004-06-21 16:00) [1]

Наверно, мало информации

На 100% в яблочко!


 
bushmen ©   (2004-06-21 16:00) [2]

А уверен, что данные и там, и там - абсолютно одинаковые?


 
Fishka   (2004-06-21 16:04) [3]

bushmen ©   (21.06.04 16:00) [2]
Да, имена таблиц и полей одинаковы. И запрос не выдает ошибок.

Ищу ошибку в программе уже довольно давно. Больше нет сил.


 
Anatoly Podgoretsky ©   (2004-06-21 16:08) [4]

А теперь мы всю ночь будем мучатьсяЮ, думать, что работает неверно.


 
Fishka   (2004-06-21 16:16) [5]

Мучаться не надо, желательно попытаться помочь.
Вот кусок:

 ADQ_my.Close;
 ADQ_my.SQL.Clear;
 ADQ_my.SQL.Add("SELECT * FROM own where id_own<0");
 try
  ADQ_my.Open;
 except
 end;


И если запрос к mySQL, то далее программа работает некорректно.
Если запрос к MSSQL, то далее программа работает нормально (ежедневно в течение 5 месяцев проблем не было, обработано не менее 50 000 записей).
Запрос к mySQL вставлен недавно, и начались проблемы.


 
bushmen ©   (2004-06-21 16:18) [6]

>то далее программа работает некорректно

В чем выражается это "некорректно"? И как она должна работать правильно?


 
Ega23 ©   (2004-06-21 16:19) [7]

Запрос к mySQL вставлен недавно, и начались проблемы.
1. Идентичны ли эти запросы?
2. Идентичны ли параметры соединения?


 
Fishka   (2004-06-21 16:23) [8]

Ega23 ©   (21.06.04 16:19) [7]
1.да
2.ConnectionString выглядит по-разному.
mySQL:Provider=MSDASQL.1;Password=mmm;Persist Security Info=True;User ID=fff;Data Source=f_m
MS SQL: Provider=SQLOLEDB.1;Password=111;Persist Security Info=True;User ID=1_1;Data Source=MERC


 
Ega23 ©   (2004-06-21 16:34) [9]

Тогда см. [6]


 
Fishka   (2004-06-21 16:41) [10]

Непонятно. Ошибка в формировании массивов в совершенно другой процедуре. Но если убрать Connection к mySQL (которого не было  раньше), то все нормально. Программа без mySQL работала нормально!

Извините, ухожу. Буду завтра. Но надеюсь на помощь.


 
bushmen ©   (2004-06-21 16:44) [11]

>Непонятно. Ошибка в формировании массивов в совершенно другой >процедуре. Но если убрать Connection к mySQL (которого не было  >раньше), то все нормально

А нам-то как непонятно!

>Но надеюсь на помощь.

Надежда умерает последней... вместе с человеком. :))))


 
Fishka   (2004-06-22 09:06) [12]

Вопрос, на мой взгляд, может иметь следующие ответы:
1. необходим ADOUpgrade для Delphi 7 (как это было для Delphi 5).
Существует ли он и где его взять?
2. ошибка в драйвере mySQL. Нужен другой. См. п.1.
3. .............


 
bushmen ©   (2004-06-22 09:24) [13]

>Fishka   (22.06.04 09:06) [12]

Или ты отвечаешь на наши вопросы или никто тебе ничем не сможет помочь!


 
Anatoly Podgoretsky ©   (2004-06-22 09:26) [14]

Ты больше так не делай
except
end;


 
Fishka   (2004-06-22 09:40) [15]

1.bushmen ©   (22.06.04 09:24) [13]
На какой вопрос ко мне нет ответа?
Anatoly Podgoretsky ©   (22.06.04 09:26) [14]
Почему не делать: try ... except end;?
(А вдруг непредвиденные обстоятельства?)


 
bushmen ©   (2004-06-22 09:52) [16]

>На какой вопрос ко мне нет ответа?

Хотя бы на этот: bushmen ©   (21.06.04 16:18) [6]

>Почему не делать: try ... except end;?
(А вдруг непредвиденные обстоятельства?)

Вот в случае непредвиденных обстоятельств ты ничего и не узнаешь :) Ты бы хоть вывод сообщения об ошибке выводил или лучше обработчик поставил.


 
Fishka   (2004-06-22 10:10) [17]

1. См. вопрос. Ошибка указана: некорректно заполняются TstringList-ы
2.Конечно, вывод сообщения об ошибке есть. Но какое это имеет отношение к вопросу?


 
Ega23 ©   (2004-06-22 10:15) [18]

Fishka   (22.06.04 10:10) [17]

Блин, ну чего непонятного-то? Если некорректно заполняются TstringList-ы, то это ошибка в прогграмме.


 
Fishka   (2004-06-22 10:18) [19]

Ega23 ©   (22.06.04 10:15) [18]
Но программа корректно работала и работает (если без обращения к mySQL) уже 6 месяцев! Ежедневно!
Но как только был сделан запрос к таблицам mySQL, начался бред.
Почему?


 
bushmen ©   (2004-06-22 10:18) [20]

>Fishka   (22.06.04 10:10) [17]

Сделай проще: добавь на форму 2 GRID"a и в один выведи данные из SQL Server, в другой - из MySQL и сравни результаты. Тебе сразу все станет ясно.


 
Fishka   (2004-06-22 10:26) [21]

Но дело не в результатах запроса!
Запрос в том и другом случае возвращает 0 записей (это для отладки).

В программе я ничего не меняю! Только AdoConnection на форме и сразу какой-то бред!

И все-таки см. Fishka   (22.06.04 09:06) [12]


 
bushmen ©   (2004-06-22 10:29) [22]

>Запрос в том и другом случае возвращает 0 записей

Тогда объясни, что ты выводишь в StringList? :))


 
Anatoly Podgoretsky ©   (2004-06-22 10:31) [23]

Fishka   (22.06.04 10:26) [21]
Интересно 0 записей и вывод в StringGrid, воздуза что ли?


 
Johnmen ©   (2004-06-22 10:38) [24]

>Fishka

Что такое f_m ?


 
bushmen ©   (2004-06-22 10:42) [25]

>Что такое f_m ?

Это он, наверное, радио слушает :))


 
Johnmen ©   (2004-06-22 10:43) [26]

>Это он, наверное, радио слушает :))

Тогда это ошибка, т.к. не указана частота... :^)


 
Fishka   (2004-06-22 10:47) [27]

bushmen ©   (22.06.04 10:29) [22]
Anatoly Podgoretsky ©   (22.06.04 10:31) [23]
Это уже в другой процедуре, которая никакого отношения (вроде бы) ни к каким запросам не имеет.

Johnmen ©   (22.06.04 10:38) [24]
f_m - System DSN (ODBC Data Source Administrator).


 
Johnmen ©   (2004-06-22 10:59) [28]

Fishka   (22.06.04 10:47) [27]

Это понятно. Ты название драйвера, скрывающегося за f_m, приведи.


 
Fishka   (2004-06-22 11:04) [29]

mySQL ODBC 3.51 Driver


 
bushmen ©   (2004-06-22 11:08) [30]

>Это уже в другой процедуре, которая никакого отношения (вроде >бы) ни к каким запросам не имеет

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


 
Johnmen ©   (2004-06-22 11:10) [31]

>Fishka   (22.06.04 11:04) [29]

Коннект проходит ?
Где mySQL сервер стоит ?


 
Fishka   (2004-06-22 11:11) [32]

ushmen ©   (22.06.04 11:08) [30]
В ней и есть разногласия.


 
bushmen ©   (2004-06-22 11:45) [33]

Хватит играть в прятки: ты говоришь, что у тебя неверно выводится в StringList - вот и напиши, что выводится и что должно выводится!


 
Fishka   (2004-06-22 11:58) [34]

Johnmen ©   (22.06.04 11:10) [31]
Коннект проходит
Free BSD 4.x


 
Johnmen ©   (2004-06-22 12:07) [35]

Fishka   (22.06.04 11:58) [34]

Так. Движемся дальше...
Запрос выполняется ?


 
Плохиш ©   (2004-06-22 12:18) [36]

В программе 6 месяцев была ошибка, которая проявилась при очередном изменении программы. Лето на дворе, а телепаты ешё/уже не в отпуске :-) и дружно бросились искать ошибку, а ошибка спокойно сидит себе в 17й строке и посмеивается :-)


 
Fishka   (2004-06-22 12:20) [37]

Johnmen ©   (22.06.04 12:07) [35]
Если в программе закомментированы строки:
ADQ_my.SQL.Add("SELECT * FROM own where id_own<0");
try
 ADQ_my.Open;
except
end;
то все ОК.

И даже неважно выполняется или нет запрос.Если закомментировать строку с Open, то все равно глюки.

Если вышеприведенные строки раскомментировать, то программа в одной из процедур (где в основном мат. формулы) работает некорректно.
Это все в том случае, если есть mySQL.

Если нет mySQL, то все нормально.


 
Fishka   (2004-06-22 12:22) [38]

Плохиш ©   (22.06.04 12:18) [36]
К сожалению, нет 17-й строки.
Есть всего одна, связанная с ADOConnection (да и то не в программе).


 
Anatoly Podgoretsky ©   (2004-06-22 12:24) [39]

Продолжаем разговор.


 
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);


 
Fishka   (2004-06-22 16:32) [81]

Sandman25 ©   (22.06.04 16:06) [80]
Все равно глюки :
"SELECT * FROM own where id_own<0#0"
"SELECT * FROM own#0 where id_own<0#0"


 
Sandman25 ©   (2004-06-22 17:34) [82]

[81] Fishka   (22.06.04 16:32)

У меня не так. Внимательнее смотрим...


 
Andrick ©   (2004-06-23 06:31) [83]

"SELECT * FROM own where id_own<0" + #0


 
Fishka   (2004-06-23 09:45) [84]

Все равно глюки:

"SELECT own.* FROM own WHERE (((own.id_own)<0))"#0
"SELECT own.* FROM own WHERE (((own.id_own)<0))"+#0

Мне кажется, уже теплее. Проблема в запросе или в свойствах компонента ADOQuery.


 
Andrick ©   (2004-06-23 10:35) [85]

Как исключение - однажды встретил рекомендацию в особо критических случаях заключать запрос в двойные кавычки. Но как это в реальности воплотить - не знаю.
Кстати, если и при закрытом MySQL те же глюки, то скорее всего, придется пользоваться чем либо одним - или менять способ подключения к базе данных. Попробуй подцепиться MySQL через ADO, а к MS SQL - через BDE. Если глюк пропал - проблема в ADO, иначе... Если есть желание - кинь исходник на мыло, но сразу предепреждаю - возможно, ответа ждать придется пару дней. Только зазипуй


 
Fishka   (2004-06-23 10:56) [86]

Andrick ©   (23.06.04 10:35) [85]
Если есть желание - кинь исходник на мыло
Спасибо за предложение, но исходник просто огромный. Мне жаль Вашего времени.

если и при закрытом MySQL те же глюки - да, те же.

А как поменять способ подключения к базе данных mySQL? Кроме Ado, чем можно пользоваться? (К MSSQL не хотелось бы).


 
Fishka   (2004-06-23 15:53) [87]

Ничего не получается.
К mySQL подключаюсь через BDE. DataBase1.Connected:=True стоит на FormCreate. И все равно неверно работает (ошибка в функции Attrib_rebro (неверно формируется массив Area).
Как только убираю DataBase1.Connected:=True, все нормально.

Так что проблема не в тексте запроса. Сейчас нет никаккого запроса.

Но мне нужны данные из таблиц mySQL. Что делать?


 
Andrick ©   (2004-06-23 16:35) [88]

В общем, лучше кинь. Вдруг да помогу. К тому же, если честно, люблю копаться в чужих программах - ежли автор позволяет.
 Кстати, о подключении к MySQL через BDE. У тебя получилось? Какую версию MySQL используешь?


 
Fishka   (2004-06-24 08:53) [89]

Версия mySQL 3.2.x.. Вроде получилось через BDE.

Сегодня еще помучаюсь, хочется понять. Но если результата не будет, то кину. Только, куда не знаю.


 
Andrick ©   (2004-06-24 15:57) [90]

Издеваешься? Наведи мышку на ник - получишь с строке состояния результат


 
bushmen ©   (2004-06-24 16:11) [91]

>Версия mySQL 3.2.x
А конкретнее?


 
Fishka   (2004-06-25 14:27) [92]

Andrick ©   (24.06.04 15:57) [90]
Зачем так просто? Смотрю анкету - а там email нету.
bushmen ©   (24.06.04 16:11) [91]
3.23.58

Но проблема решена. Ошибок, а вернее неточностей, много.
Например,
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

неверно отрабатывает после коннекта с mySQL.
Если коннекта с mySQL нет, то например, 84-84=0.
Если коннект с mySQL есть, то например, 84-84=1.13Е-14.

Так что вышеприведенная функция исправлена. Сравнивания реальных чисел между собой нет. Теперь сравниваю только целые.
За советы спасибо Andrick © (ОГРОМНОЕ), Sandman25 ©, bushmen ©, Johnmen ©.


 
bushmen ©   (2004-06-25 15:58) [93]

>Если коннект с mySQL есть, то например, 84-84=1.13Е-14.

Что-то слабо верится, что Delphi по-разному считает :)))
Мне кажется, что проблема в формате хранения данных в MySQL. Посмотри.


 
Andrick ©   (2004-06-25 19:32) [94]

Действительно, проблема все-таки в формате данных - он у MySQL и MS SQL очень даже разный, поэтому один и тот же код не приемлем. А мыло - подведи к нику, но не нажимай - в анкете-то как раз мыло не показывается :))
На худой конец, запиши так andrick_@mail.ru


 
Симафор Лютый   (2004-06-25 21:42) [95]

Вот и я говорю что фигня какая то, а гендальф говорит, что ножницы.


 
Симафор Лютый   (2004-06-25 21:43) [96]

Вот и я говорю что фигня какая то, а Гендальф говорит, что ножницы. Проблема - коаксиалку на витую пару нужно заменить - будет работать точно! Проверено электроникой



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

Текущий архив: 2004.07.18;
Скачать: CL | DM;

Наверх




Память: 0.73 MB
Время: 0.041 c
6-1084790249
AndrewK
2004-05-17 14:37
2004.07.18
Загрузка курса валют с РБК


3-1088146776
MVVD
2004-06-25 10:59
2004.07.18
Экспорт в EXCEL лицевых счетов


4-1086341369
Thick
2004-06-04 13:29
2004.07.18
Процессы


14-1088151356
infom
2004-06-25 12:15
2004.07.18
Pomogite u menya tut kakie-to glyuki


14-1088115349
Князь Мышкин
2004-06-25 02:15
2004.07.18
Ваше отношение к математике как к науке?