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

Вниз

Выполнение запроса с цифрами   Найти похожие ветки 

 
psa247   (2008-06-23 00:34) [0]

Доброго времени суток !
Имеется firebird 2/0/3
Есть SQL-запрос

if (Trim(FindEdit.Text)<>"") then SQL := SQL+" AND INN LIKE """+"%"+String(Trim(FindEdit.Text))+"%""";

срабатывает через раз, т.е. если
FindEdit.Text = 123465789, то корректно
если, к примеру, 1154554655, то запрос отрабатывает, но в базу не пишет.

Тип поля CHAR(15), лишних пробелов нет


 
Поросенок Винни-Пух ©   (2008-06-23 01:24) [1]

то запрос отрабатывает, но в базу не пишет.

если не пишет, значит и не "отрабатывает"


 
psa247   (2008-06-23 01:34) [2]

ну а чтоб отработал, соответственно, и записывал в базу и поиск производил, что надо ?


 
Поросенок Винни-Пух ©   (2008-06-23 01:40) [3]

да практически ничего, кроме правильного текста запроса


 
psa247   (2008-06-23 09:46) [4]

текст запроса правильный, т.к. в SQl-редакторе IBExpert-а выдает нужное число записей.

Может, наведет на мысль:
FindEdit - компонент MaskEdit
пробовал вместо LIKE использовать .... AND (INN="+chr(39)+Trim(FindEdit.Text)+chr(39)+") AND....
и затроенные кавычки пробовал """ - результат такой же, одни наборы цифр пишет, другие нет


 
Sergey13 ©   (2008-06-23 09:53) [5]

> [4] psa247   (23.06.08 09:46)
> текст запроса правильный, т.к. в SQl-редакторе IBExpert-
> а выдает нужное число записей.

Значит ошибка в твоей программе.
Но ты же партизан - вместо кода выдаешь только свои мысли о нем.


 
Поросенок Винни-Пух ©   (2008-06-23 10:10) [6]

> а выдает нужное число записей.

У тебя же инсерт. Какое такое нужное число записей показывает запрос в эксперте?


 
ЮЮ ©   (2008-06-23 10:37) [7]

> Есть SQL-запрос
>
> if (Trim(FindEdit.Text)<>"") then SQL := SQL+" AND INN LIKE
> """+"%"+String(Trim(FindEdit.Text))+"%""";


Это только часть секции WHERE запроса. Причем формируемой в Дельфи. Причем формируемый идеологически неверно.

>текст запроса правильный, т.к. в SQl-редакторе IBExpert-а выдает нужное число записей.

правильный текст запроса ты не приводишь.
Полный текст кода, его формирующий &#151; тоже.
И просишь найти ошибку в том, что видищь лиз сам. Не странно ли?


 
Правильный-Вася   (2008-06-23 10:50) [8]


> Тип поля CHAR(15), лишних пробелов нет

так бывает, только если поле заполнено под завязку, а у тебя неясно как
а в IBExpert по умолчанию пробелы отрезаются при отображении


 
Anatoly Podgoretsky ©   (2008-06-23 11:36) [9]

> Поросенок Винни-Пух  (23.06.2008 1:40:03)  [3]

Он тебя не понимает, какой еще текст запроса, а ты за это заплатил?


 
psa247   (2008-06-23 13:44) [10]

Инициализация:

procedure TClientForm.RadioFindClick(Sender: TObject);
begin
 FindEdit.Text := "";
 if RadioFind.ItemIndex = 2 then FindEdit.EditMask := "9999-999999;1;#"
 else
 begin
   FindEdit.EditMask := "";
   FindEdit.Text := "Введите строку для поиска";
 end;
end;


 SQL := "SELECT * FROM CLIENTS ";
 SQL := SQL + "WHERE INOSTR="+IntToStr(Integer(CheckBoxInostr.Checked));
 case RadioFind.ItemIndex of
   0: begin
      if (Trim(FindEdit.Text)<>"")AND(FindEdit.Text<>"ВВЕДИТЕ СТРОКУ ДЛЯ ПОИСКА") then SQL := SQL+" AND FAMILIYA="+chr(39)+Trim(FindEdit.Text)+chr(39);
      end;
   1: begin
      if (Trim(FindEdit.Text)<>"")AND(FindEdit.Text<>"ВВЕДИТЕ СТРОКУ ДЛЯ ПОИСКА") then SQL := SQL+" AND INN="+chr(39)+Trim(FindEdit.Text)+chr(39);
      end;
   2: begin
      if not(CheckBoxInostr.Checked) then
        SQL := SQL+" AND PASSSERIA="+chr(39)+LeftStr(FindEdit.Text,4)+chr(39)+" AND PASSNOMER="+chr(39)+RightStr(FindEdit.Text,6)+chr(39)
      else
        // у иностранцев - по-другому
         
      end;
   end;
   SQL := SQL + " ORDER BY FAMILIYA ASC;";


В SQL-редакторе: SELECT * FROM CLIENTS WHERE INOSTR="1"  AND INN="1561546545456" дает правильный результат.
В программе: INN="123456789"  - дает правильный результат
НО: INN="1561546545456"  - дает НЕПравильный результат


 
psa247   (2008-06-23 13:47) [11]


   SQL := "INSERT INTO CLIENTS (";
   SQL := SQL+"INOSTR, FAMILIYA, IMYA, OTCHESTVO, BORN, PASSSERIA, PASSNOMER, PASSVYDAN, PASSKEM, ADDRESS, INFO, ";
   SQL := SQL+"INN, OBLAST, RAION, TOWN, FIRM) VALUES (";

   SQL := SQL + IntToStr(Integer(InostrCheck.Checked))+", "+chr(39)+Trim(FEdit.Text)+chr(39)+", "+chr(39);
   SQL := SQL +Trim(IEdit.Text)+chr(39)+", "+chr(39)+Trim(OEdit.Text)+chr(39)+", "+chr(39);
   SQL := SQL +DateToStr(BornDate.Date)+chr(39)+", "+chr(39)+Trim(PSEdit.Text)+chr(39)+", "+chr(39);
   SQL := SQL +Trim(PNEdit.Text)+chr(39)+", "+chr(39)+DateToStr(PVDate.Date)+chr(39)+", "+chr(39);
   SQL := SQL +Trim(PVKem.Text)+chr(39)+", "+chr(39)+Trim(AddressEdit.Text)+chr(39)+", "+chr(39);
   SQL := SQL +Trim(InfoEdit.Text)+chr(39)+", "+chr(39)+Trim(INNEdit.Text)+chr(39)+", "+chr(39);
   SQL := SQL +Trim(EditObl.Text)+chr(39)+", "+chr(39)+Trim(EditRaion.Text)+chr(39)+", "+chr(39);
   SQL := SQL +Trim(EditTown.Text)+chr(39);


 
psa247   (2008-06-23 13:48) [12]

В этом запрос не заносит в базу BIK банка
   SQL := "INSERT INTO FIRMS (";
   SQL := SQL + "NAME, INN, KPP, UADDRESS, PADDRESS, PHONE, DIREKTOR, BANK, BIK, RSCHET, KSCHET) VALUES(";
   SQL := SQL +chr(39)+Trim(EditName.Text)+chr(39)+", "+chr(39)+Trim(EditINN.Text)+chr(39);
   SQL := SQL +", "+chr(39)+Trim(EditKPP.Text)+chr(39)+", "+chr(39)+Trim(EditUrAddress.Text)+chr(39);
   SQL := SQL +", "+chr(39)+Trim(EditFAddress.Text)+chr(39)+", "+chr(39)+Trim(EditPhone.Text)+chr(39);
   SQL := SQL +", "+chr(39)+Trim(EditDir.Text)+chr(39)+", "+chr(39)+Trim(EditBank.Text)+chr(39);
   SQL := SQL +", "+chr(39)+Trim(EditBIK.Text)+chr(39)+", "+chr(39)+Trim(EditRSchet.Text)+chr(39);
   SQL := SQL +", "+chr(39)+Trim(EditKSchet.Text)+chr(39)
          +");";


 
Поросенок Винни-Пух ©   (2008-06-23 13:53) [13]

а теперь ShowMessage(SQL.Text) и найти 10 отличий с "правлильным" запросом


 
psa247   (2008-06-23 13:54) [14]

а нет отличий, проверял


 
Поросенок Винни-Пух ©   (2008-06-23 13:55) [15]

ты их не заметил


 
Sergey13 ©   (2008-06-23 13:56) [16]

> [12] psa247   (23.06.08 13:48)

А про параметрические запросы слышал что нибудь? Весьма пользительная штука.

ЗЫ: Я бы такие запросы тоже не стал обрабатывать. 8-)


 
psa247   (2008-06-23 14:03) [17]

---------------------------
INSERT INTO CLIENTS (INOSTR, FAMILIYA, IMYA, OTCHESTVO, BORN, PASSSERIA, PASSNOMER, PASSVYDAN, PASSKEM, ADDRESS, INFO, INN, OBLAST, RAION, TOWN, FIRM) VALUES (0, "ПОРОСЕНОК", "ПУХ", "", "01.01.2001", "2804", "445465", "05.01.2001", "", "", "", "1561655565454", "", "", "", -1);

---------------------------
SELECT * FROM CLIENTS WHERE INOSTR=0 AND INN="115615445545" ORDER BY FAMILIYA ASC;
---------------------------
OK  
---------------------------

ну и...


 
Правильный-Вася   (2008-06-23 14:08) [18]


> В SQL-редакторе: SELECT * FROM CLIENTS WHERE INOSTR="1"
>  AND INN="1561546545456" дает правильный результат.

> SELECT * FROM CLIENTS WHERE INOSTR=0 AND INN="115615445545"
> ORDER BY FAMILIYA ASC;

где же правда


 
Поросенок Винни-Пух ©   (2008-06-23 14:10) [19]

соммита значит не было. читающая транзакция не видит вставленных данных


 
psa247   (2008-06-23 14:17) [20]


> Правильный-Вася   (23.06.08 14:08) [18]

очепятка

   OpenConnections(SuperUser);
   IBDatabase.Open;
   IBQueryClients.Close;
   IBQueryClients.SQL.Clear;
   IBQueryClients.SQL.Add(SQL);
   IBQueryClients.Open;
   IBQueryClients.FetchAll;
   IBQueryClients.Transaction.Commit;
   IBQueryClients.Open;


 
Поросенок Винни-Пух ©   (2008-06-23 14:19) [21]

очепятка

предлагается по ним догадаться что там на самом деле?


 
Sergey13 ©   (2008-06-23 14:26) [22]

> [20] psa247   (23.06.08 14:17)

Какой смысл в последних двух строках?


 
psa247   (2008-06-23 14:42) [23]

Подтвердить транзакцию, вывести в ДБГрид


 
Sergey13 ©   (2008-06-23 14:44) [24]

> [23] psa247   (23.06.08 14:42)

Без них не выводится что-ли?


 
psa247   (2008-06-23 15:01) [25]

Без последнего IBQueryClients.Open; не выводит


 
Поросенок Винни-Пух ©   (2008-06-23 15:04) [26]

ну так чего как слепой котенок-то, честное слово?
не видно данных после инсерта - убери where и посмотри все что там есть.
не видно - зайди/выйди снова посмотри.

локализуй проблему-то!


 
Sergey13 ©   (2008-06-23 15:06) [27]

> [25] psa247   (23.06.08 15:01)

А про Transaction.Commit в справке почитать?

ЗЫ: IBX кстати с ФБ2 и не должен работать. Вернее его полная работоспособность не гарантирована.



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

Форум: "Начинающим";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.045 c
1-1195564414
kyn66
2007-11-20 16:13
2008.07.20
Вставить множество в SQL запрос


4-1193159147
Delll
2007-10-23 21:05
2008.07.20
ClipCursor


2-1212575484
TUserClass
2008-06-04 14:31
2008.07.20
Проблема с тулбаром для IE ...


15-1212563337
Kolan
2008-06-04 11:08
2008.07.20
Есть подозрение, что найдено средство от зависания отладки...


2-1214072499
Вован
2008-06-21 22:21
2008.07.20
Нужно открыть окно чужой минимизированной программы





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