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

Вниз

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

Наверх





Память: 0.47 MB
Время: 0.003 c
15-1300896940
Palladin
2011-03-23 19:15
2011.07.10
Делегаты, анонимные методы, C#


15-1296216163
12
2011-01-28 15:02
2011.07.10
посоветуйте идею визуального редактора условий в запросе


15-1301257797
Юрий
2011-03-28 00:29
2011.07.10
С днем рождения ! 28 марта 2011 понедельник


15-1300915800
Юрий
2011-03-24 00:30
2011.07.10
С днем рождения ! 24 марта 2011 четверг


15-1301122015
asail
2011-03-26 09:46
2011.07.10
Посоветуйте с покупкой нетбука...





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