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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.72 MB
Время: 0.04 c
14-1088602579
pasha_golub
2004-06-30 17:36
2004.07.18
Помогите с Java


3-1088173170
Sirruf
2004-06-25 18:19
2004.07.18
TDBGridEh


8-1083144027
Ded Moroz
2004-04-28 13:20
2004.07.18
MPEG-4


1-1088881014
Vasya.ru
2004-07-03 22:56
2004.07.18
При нажатии на крестик в правом верхнем углу выводить окно?


1-1088848296
DeepProg
2004-07-03 13:51
2004.07.18
Управление и взаимодействие двух форм





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