Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730

Как несколько раз извлечь данные из базы по двум условиям?

09.11.2016, 22:50. Показов 1611. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
СЦЕНАРИЙ
1. Перейти в ПОИСКОВИК "https://yandex.ru"
2. Ввод ПОИСКОВОЙ ФРАЗЫ
3. Нажатие "ВВОД"

Далее с поисковой выдачей работает нижеприведённый код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 string id = textBox2.Text; // 
            
            foreach (DataRow row in table.Rows)
            {
                // ПЕРЕМЕННЫЕ
                var id1 = row["ID"].ToString().Equals(id); // "ID" из базы данных соответствует "id" из textBox2
                var nom13 = row["nom"].ToString() == (13).ToString();
                var nom14 = row["nom"].ToString() == (14).ToString();
                var url1 = row["url1"].ToString();
 
                if (id1 && nom14) // если "ID" из базы данных соответствует id из textBox2 И из поля "nom" для этого "ID" равно 14
                {
                    List<IWebElement> News = Browser.FindElements(By.CssSelector(url1)).ToList(); // считываем из поисковой выдачи все ссылки согласно CssSelector                   
                }                               
                    for (int i = 0; i < 1; i += 1)                 
                    {
                        if (id1 && nom13)
                        {
                            String s = News[i].Text;
                                if (s.Contains(url1)) // если текст СОДЕРЖИТ
                                {                                    
                                    News[i].SendKeys(OpenQA.Selenium.Keys.Control + OpenQA.Selenium.Keys.Shift + OpenQA.Selenium.Keys.Return); // нажатие по ссылке сочетанием клавиш Control + Shift + Левая кнопка мыши
                                }
                        }
                    }
ВОПРОС
1. Как сделать чтобы значение для id1 && nom13 из поля url1 попало в s.Contains(url1)
см. скрин
Миниатюры
Как несколько раз извлечь данные из базы по двум условиям?  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2016, 22:50
Ответы с готовыми решениями:

Как извлечь данные из Excel в datagridview по двум характеристикам?
ИМЕЕТСЯ БД в Ексель ВОПРОС Извлечь из Ексель данные по двум параметрам по в три datagridview СЦЕНАРИЙ 1. Вносим...

Как извлечь данные из файла базы данных *.bd
как извлечь дание из бази даних *.bd на C#?

Как извлечь данные из поврежденной базы данных
Здравствуйте, уважаемые программисты, у меня сложилась критичная ситуация, на диске обмена есть база данных с заказами на выполнение...

7
 Аватар для Serg34
100 / 100 / 33
Регистрация: 20.09.2014
Сообщений: 457
Записей в блоге: 3
09.11.2016, 23:32
zakaz_77, Попробуй так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
            string id = textBox2.Text; // 
 
            foreach (DataRow row in table.Rows)
            {
                // ПЕРЕМЕННЫЕ
                var id1 = row["ID"].ToString().Equals(id); // "ID" из базы данных соответствует "id" из textBox2
                var nom13 = row["nom"].ToString() == (13).ToString();
                var nom14 = row["nom"].ToString() == (14).ToString();
 
 
                if (id1 && nom14) // если "ID" из базы данных соответствует id из textBox2 И из поля "nom" для этого "ID" равно 14
                {
                    List<IWebElement> News = Browser.FindElements(By.CssSelector(url1)).ToList(); // считываем из поисковой выдачи все ссылки согласно CssSelector   
 
                    List<string> searchTexts = new List<string>();
                    foreach (DataRow row in table.Rows)
                        searchTexts.Add(row["url1"].ToString());
 
 
                }
                for (int i = 0; i < 1; i += 1)
                {
                    if (id1 && nom13)
                    {
                        String s = News[i].Text;
 
                        var contains = false;
                        foreach (var url in searchTexts)
                        {
                            if (s.Contains(url))
                            {
                                contains = true;
                                break;
                            }
                        }
                        if (contains) // если текст СОДЕРЖИТ
                        {
                            News[i].SendKeys(OpenQA.Selenium.Keys.Control + OpenQA.Selenium.Keys.Shift + OpenQA.Selenium.Keys.Return); // нажатие по ссылке сочетанием клавиш Control + Shift + Левая кнопка мыши
                        }
                    }
                }
Добавлено через 23 минуты
zakaz_77, Стоп!
Видимо, не совсем Вас понял! А какая проблема в Вашем коде?
1
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
09.11.2016, 23:47  [ТС]
В строках 11-13 код из сообщения #1
C#
1
2
3
if (id1 && nom14) // если "ID" из базы данных соответствует id из textBox2 И из поля "nom" для этого "ID" равно 14
                {
                    List<IWebElement> News = Browser.FindElements(By.CssSelector(url1)).ToList();
всё выполняется замечательно и значение из базы, из столбца url1 попадает в CssSelector и всё работает

А вот в строках 17-20 код из сообщения #1
C#
1
2
3
4
if (id1 && nom13)
 {
    String s = News[i].Text;
      if (s.Contains(url1)) // если текст СОДЕРЖИТ
это уже не срабатывает и в Contains() значение из url1 не попадает

Не знаю... может сам подход бредовый... Но как могу...


Сделал по вашим рекомендациям. Выдаёт ошибку.
См. скрин.
Миниатюры
Как несколько раз извлечь данные из базы по двум условиям?  
0
 Аватар для Serg34
100 / 100 / 33
Регистрация: 20.09.2014
Сообщений: 457
Записей в блоге: 3
09.11.2016, 23:50
Цитата Сообщение от zakaz_77 Посмотреть сообщение
это уже не срабатывает и в Contains() значение из url1 не попадает
Ошибку выдает? Или текст не находит?
0
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
10.11.2016, 00:06  [ТС]
Цитата Сообщение от Serg34 Посмотреть сообщение
Ошибку выдает? Или текст не находит?
Вообще реакции нет.

Если if (id1 && nom14) срабатывает, и я вижу значение в label (дублирую значение в label, чтобы видно было, что происходит)
То после if (id1 && nom13) никаких реакций не происходит
0
 Аватар для Serg34
100 / 100 / 33
Регистрация: 20.09.2014
Сообщений: 457
Записей в блоге: 3
10.11.2016, 00:12
Лучший ответ Сообщение было отмечено zakaz_77 как решение

Решение

zakaz_77, Вобщем если у Вас не находит искомый текст в новостях, то скорее всего его там и нет.
Видимо, Вы ожидаете "чудо поиска" как в яндексе - вы вводите фразу, а он ищет похожие встречающиеся на разных сайтах.
Метод String.Contains() ищет точную копию одного текста внутри другого.
Даже если отличие только в заглавной и строчной букве - это уже разные символы и разный текст, и естественно Contains выдаст false. А "чудо поиск" как в яндексе - задача ну оооочень не тривиальная.
К примеру нужно понимать синонимы, ошибку раскладки клавиатуры и т.д.

Добавлено через 4 минуты
Цитата Сообщение от zakaz_77 Посмотреть сообщение
дублирую значение в label, чтобы видно было, что происходит
Научитесь пользоваться точками останова
Просто левый клик на серой вертикальной полоске слева от номера интересующей Вас строки.
И во время выполнения Вы можете навести курсор на нужную переменную и узнать текущее значение
Перейти на шаг вперед F11
1
9 / 9 / 4
Регистрация: 23.12.2015
Сообщений: 730
10.11.2016, 01:10  [ТС]
Прилагаю скрины
На первом начал проход со строчки
string id = textBox2.Text;

На втором начал проход со строчки
label9.Text = url1;

Цитата Сообщение от Serg34 Посмотреть сообщение
Научитесь пользоваться точками останова
Попробовал... Пока разбираюсь....
Миниатюры
Как несколько раз извлечь данные из базы по двум условиям?   Как несколько раз извлечь данные из базы по двум условиям?  
0
 Аватар для Serg34
100 / 100 / 33
Регистрация: 20.09.2014
Сообщений: 457
Записей в блоге: 3
10.11.2016, 08:28
zakaz_77, Вот видео по отладке
Там, правда, по разработку для AutoCAD, лучше с 06:20 смотрите
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2016, 08:28
Помогаю со студенческими работами здесь

В запросе к БД фигурируют 3 таблицы. Нужны данные по двум условиям
1. Первая таблица oc_product. Берем поля model и geolocation 2. Вторая таблица oc_product_description. Берем поля name и meta_keyword ...

Как из базы access извлечь данные для последующей обработки при помощи математических функций ?
Люди добрые помогите начинающим.... Есть база на access как мне, из нее достать эти данные чтобы можно было математические функции с...

Как из базы вывести один раз запись если их несколько?
Доброго времени суток! Ситуация такая, в есть таблица attendance у которой есть поле date, дата храниться как yyyy-mm-dd (2017-08-11) ...

Не получается правильно извлечь данные из базы
Доброго времени суток, уважаемые форумчане. Передо мной стоит такая задача: в БД есть таблица category_ru и таблица articles. В первой...

Нужно извлечь текст между определенными символами (в строке они встречаются несколько раз)
нужно из строки текста, содержащего и точки, и двоеточия (их может быть несколько), извлечь часть текста, находящуюся слева от самого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru