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

Вниз

Delphi Access and ADO   Найти похожие ветки 

 
crossmark   (2011-03-31 11:52) [0]

Здравствуйте!
Пишу программу с первым применением БД.
БД Access.
Там несколько таблиц.
В данном случае беру две таблицы это шаблоны фраз и сама фраза.
связанны они по Id.
В приложении использовал: AdoConnection, AdoQuery, Source, 2 BDGrid
Смысл в том что поступает некая строка сообщения и ее надо проверить по таблице Frase по полю mask.
делал вот так:
dm.Query_Search.SQL.Clear;
dm.Query_Search.SQL.Add("SELECT Frase.Id_Frase, Frase.mask, Frase.text, Answer.answer");
dm.Query_Search.SQL.Add("FROM Frase");
dm.Query_Search.SQL.Add("WHERE mask LIKE"+" "%"+GetMask(val)+"%"");
// showmessage(dm.Query_Frase.SQL.Text);
dm.Query_Search.ExecSQL;
dm.Query_Search.Open;

этот метод работает находит или нет(если нет шаблона) выводится на таблицу DBGrid
Но столкнулся с такой проблемой.

на форме еще есть таблица DBGrid (и таблица в базе Answer) и в ней теперь должна отображаться связь (Frase and Answer по ID)
т.е. одна табличка заполняется и должна же как то вторая заполняться по этой связи.
как сделать не могу понять
думал таким способом:
dm.QuerySearchFrase.SQL.Clear;
dm.QuerySearchFrase.SQL.Add("SELECT Answer.Id_Answ, Answer.answer");
dm.QuerySearchFrase.SQL.Add("FROM Answer");
dm.QuerySearchFrase.SQL.Add("WHERE FROM Frase INNER JOIN Answer ON Frase.Id_Frase=Answer.Id_Frase;");
// dm.QuerySearchFrase.ExecSQL;
dm.QuerySearchFrase.Open;
но выходит ошибка.
помогите как их связать программно и запросом. Спасибо!


 
Smile   (2011-03-31 12:08) [1]

> dm.Query_Search.SQL.Clear;
> dm.Query_Search.SQL.Add("SELECT Frase.Id_Frase, Frase.mask, Frase.text, Answer.answer");
> dm.Query_Search.SQL.Add("FROM Frase");
> dm.Query_Search.SQL.Add("WHERE mask LIKE"+" "%"+GetMask(val)+"%"");

Странно, что отрабатывает такой запрос без начальных пробелов в очередном Add


 
crossmark   (2011-03-31 12:34) [2]

может я с ним договорился :) он работает.
вопрос правда о другом


 
Anatoly Podgoretsky ©   (2011-03-31 12:46) [3]

> Smile  (31.03.2011 12:08:01)  [1]

Чего странного и нафига там пробелы?


 
И. Павел ©   (2011-03-31 12:46) [4]

WHERE FROM Frase INNER JOIN Answer ON Frase.Id_Frase=Answer.Id_Frase;

может быть, вам нужно что-то в этом роде:

"WHERE FROM Frase INNER JOIN Answer ON " + dm.Query_Search.FieldByName("id").AsString + "=Answer.Id_Frase;"


 
И. Павел ©   (2011-03-31 12:47) [5]

только не id, а Id_Frase


 
Anatoly Podgoretsky ©   (2011-03-31 12:47) [6]

Вроде он про мастер детайл спрашивает.


 
Anatoly Podgoretsky ©   (2011-03-31 12:50) [7]

Пока еще не увяз в этом болоте, сменит TAdoQuery на TAdoDataset, там и связывать просто.


 
OW ©   (2011-03-31 14:17) [8]

WHERE FROM - это такой синтаксис? и давно? (без подкола)


 
KSergey ©   (2011-03-31 14:56) [9]

> Smile   (31.03.11 12:08) [1]
> Странно, что отрабатывает такой запрос без начальных пробелов в очередном Add

Add добавляет перевод строки между фрагментами.
Ну или метод чтения всех строк свойства Text при конкатенировании отдельных строк добавляет - не вникал.


 
crossmark   (2011-03-31 15:26) [10]

хорошо.
в таблице Frase ключ Id_Frase в таблице Answer есть поле Id_Frase вот их и связал. таблицы в Accesse работают без нарекательств

хорошо, проще...

dm.Query_Search.SQL.Clear;
dm.Query_Search.SQL.Add("SELECT Frase.Id_Frase, Frase.mask, Frase.text, Answer.answer");
dm.Query_Search.SQL.Add("FROM Frase");
dm.Query_Search.SQL.Add("WHERE mask LIKE"+" "%"+GetMask(val)+"%"");
// showmessage(dm.Query_Frase.SQL.Text);
dm.Query_Search.ExecSQL;
dm.Query_Search.Open;

этим кодом нахожу поиск по шаблону и вывожу инфу в таблицу DBGrid1 из БД таблицы Frase

но таблица Frase связана с таблицей Answer и если есть инфа в Frase значит есть информация в таблице Answer  и есть у меня DBGrid2
вот как в DBGrid 2 вывести эту связь-информацию на основании Frase


 
b z   (2011-03-31 15:55) [11]

Запросом
dm.QuerySearchFrase.SQL.Text := "SELECT Id_Answ, answer FROM Answer WHERE :Id_Frase=Id_Frase";


 
crossmark   (2011-04-03 14:52) [12]

спасибо!



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

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

Наверх




Память: 0.49 MB
Время: 0.007 c
2-1301675364
Gu
2011-04-01 20:29
2011.07.10
PhysicalDrive


2-1301471734
Matveih1
2011-03-30 11:55
2011.07.10
PopupMenu и свой компонент


2-1301672845
istok
2011-04-01 19:47
2011.07.10
TidTransaction


8-1213456540
cavalera
2008-06-14 19:15
2011.07.10
Как отобразить текст в Delphi & DX8


9-1189378302
max_
2007-09-10 02:51
2011.07.10
текстура