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

Вниз

SQL   Найти похожие ветки 

 
DimChan   (2003-10-27 08:39) [0]

День Добрый, МАСТЕРА! Вот ситуация, я получаю файлы DBF,все они отличаются по структуре (Количество столбцов), а моя программа по сути дела Поисковичок, так вот проблема заключается в следующем Задаю запрос:


QProba.Active := false;
QProba.SQL.Clear ;
QProba.SQL.Add ("Select * From "" + FilePath +"" Adress");
QProba.Active := true;

SenderStrName := edit1.Text ;
if SenderStrName = "" then exit;

SqlOr := (" or (");
SqlLike := (" Like "" + SenderStrName +"%")");

i := QProba.FieldCount - 1;
SetLength(Pole,i);

pole[0] := QProba.Fields[0].fieldName;
SqlStr := ("Select * From "" + FilePath +"" Adress where ( " + Pole[0] + SqlLike );

For n := 1 to i do
begin
pole[n] := QProba.Fields[n].fieldName;
sqlStr := (SqlStr + SqlOr + Pole[n] + SqlLike) ;
end;
QTable.Active := false;
QTable.SQL.Clear ;
QTable.SQL.Add (SqlStr);
QTable.Active := true; //< здесь показывает ошибку

DataSource2.dataSet := QTable;
DBGrid1.DataSource := DataSource2;


, но прога выдает EDBEngineError с ошибкой "Type mismatch in Expression", буду очень благодарен за любую помощь.


 
DenK_vrtz   (2003-10-27 08:43) [1]

Перед QTable.Active := true; выведи текст запроса и посмотри, что получается


 
DimChan   (2003-10-28 08:21) [2]

Select * From "C:\Adress\Adress.dbf" Adress where ( NUMBER Like "A%") or (Name Like "A%") or (TU Like "A%") or (NAMEU Like "A%") or (INFO1 Like "A%") or (INFO2 Like "A%") or (INFO3 Like "A%") or (INFO4 Like "A%") or (INFO5 Like "A%") or (INFO6 Like "A%") or (INFO7 Like "A%") or (INFO8 Like "A%") or (INFO9 Like "A%") or (INFO10 Like "A%") or (INFO11 Like "A%") or (GR Like "A%") or (SD_RG_VD Like "A%") or (AMR_ADRESS Like "A%")


 
DenK_vrtz   (2003-10-28 08:58) [3]

( NUMBER Like "A%") - наводит не на добрые мысли
и еще попробовать убрать все скобки


 
Илайдж   (2003-10-28 08:58) [4]

1 - Select * From "C:\Adress\Adress.dbf" Adress
2 - "" замени за ""


 
Илайдж   (2003-10-28 09:07) [5]

2 DenK_vrtz
запрос Select * from table where intfield like "%1%" проходит, по крайней мере в MSSQL2k


 
DimChan   (2003-10-28 10:59) [6]


> Илайдж © (28.10.03 08:58) [4]
> 1 - Select * From "C:\Adress\Adress.dbf" Adress
> 2 - "" замени за ""


1. Я убрал ADRESS, убрал скобки - результат тот же;
2. замена не допустима


> Илайдж © (28.10.03 09:07) [5]
> 2 DenK_vrtz
> запрос Select * from table where intfield like "%1%" проходит,
> по крайней мере в MSSQL2k


- Ты прав это верно, так же как и "1%", разница лишь в том, что здесь он ищет по началу строки, а не в строке.

Я руками исключил из поиска поля с типом данных NUMERIC, все хорошо, только проблема как программно исключить их.


 
Bob   (2003-10-28 11:15) [7]

А ты попробуй поиграть со свойством FieldType. Типа того, если поле не строковое (символьное), а NUMERIC то переходи к следующему полю


 
Илайдж   (2003-10-28 11:17) [8]

Можно попробовать оттолкнуться от Query1.Fields[i].ClassName
проверять на то что это TStringField и дальше добавлять в запрос


 
DenK_vrtz   (2003-10-28 11:20) [9]

if QProba.Fields[n].DataType = ftFloat then
showmessage("Поле Float");


 
DimChan   (2003-10-29 08:29) [10]

Я сделал нижеследующее, но дает ошибку, не позволяет присвоить значение:


if qproba.fields[x].ClassName = "TStringField" then
begin
y := y+1;
SetLength (SProba,y);
SProba[y] := QProba.Fields[x].FieldName ; SqlStr := SqlStr + ", " + SProba[y];

RichEdit1.Text := SqlStr;
end ;



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

Форум: "Базы";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
1-56624
Mouse
2003-11-05 11:49
2003.11.17
Перетаскивание обьектов на мою форму (компонент)


14-56832
BJValentine
2003-10-17 15:08
2003.11.17
Спорт


14-56907
Думкин
2003-10-25 05:58
2003.11.17
С днем рождения! 25 октября.


14-56820
Marser
2003-10-25 13:51
2003.11.17
AVR 90S2313


3-56445
ANT0
2003-10-29 16:20
2003.11.17
IB 6.5





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