Вопрос № 91180: Здравствуйте.
я создал DBCtrlGrid1, который берет данные из таблицы, на нем разместил DBEdit1, который берет данные из некоторого столбца таблицы (long integer), мне необходимо сравнить это число, с некоторым (например 2007) и влучае если оно ме...Вопрос № 91189: Здравствуйте.
Почему данная программа не выводит результат? Мне сказали, что не обрабатывается запрос, почему?
Текст программы в приложении
Спасибо...Вопрос № 91194: Здраствуйте! Задам еще раз вопрос.
Есть столбец в таблице, который называется FIO, в нем хранятся фамилия имя отчество (например, Иванов Иван Иванович).
Мне нужно получить два столбца, 1- фамилия (иванов)
2- имя отчество (иван иванович...
Вопрос № 91.180
Здравствуйте.
я создал DBCtrlGrid1, который берет данные из таблицы, на нем разместил DBEdit1, который берет данные из некоторого столбца таблицы (long integer), мне необходимо сравнить это число, с некоторым (например 2007) и влучае если оно меньше вывести запись в Label1.
я привожу код. и все работает, но ведь в DBCtrlGrid1 объект DBEdit1 -копируеться по числу записей в таблице, и соответсвенно если в первой записи число меньше то сообщение выводиться в Label1, а в последуюх записях код не работает, и надпись просто копируеться если уловие выполнено в первой записи, как можно исправить это?
или быть может, подскажете как заменить это с помощью SQL запроса, но таблицу сначало нужно отфильтровать по некоторому коду клиента (поле "kod") а затем указать на те записи которые меньше числа 2007.
ух, спасибо всем кто вникнит в вопрос, старался как можно понятнее и подробнее объяснить проблему.
Отвечает: Blohin Ole
Здравствуйте, Michail_bal!
Ну дак он и не должен работать, потому что у Вас данный код срабатывает один раз только при на создании формы. Используйте другой обработчик события.
Ответ отправил: Blohin Ole (статус: 3-ий класс)
Ответ отправлен: 13.06.2007, 07:48
Вопрос № 91.189
Здравствуйте.
Почему данная программа не выводит результат? Мне сказали, что не обрабатывается запрос, почему?
Текст программы в приложении
Спасибо
Отвечает: Ерёмин А.А.
Здравствуйте, Слоква Алексей Сергеевич!
У вас странным образом записан цикл вывода (while). Используйте следующую конструкцию:
while (...)
{
...
}
В вашем коде, похоже, выводится лишь <tr> (откройте html-код страницы, которая выдаётся после результата работы скрипта и посмотрите, что на самом деле вывелось).
Ну и конечно нужно проверить сам запрос. В данном случае он очень простой и нужно лишь удостовериться, что таблица index существует в данной базе данных. Кстати, чтобы узнать ошибку, по которой запрос не был выполнен, нужно после mysql_query() написать: print mysql_error(); Ну а проще проверять запросы в phpMyAdmin.
И ещё один совет: в качестве переноса строки лучше использовать не
, а
.
Удачи!
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
В чем смысл?
1. У Вас нарушена логика структуры while, плюс двоеточие после print недопустимо.
2. Функция mysql_fetch_array() возвращает в данном случае ДВУМЕРНЫЙ массив данных: первое измерение - строки возвращаемых данных (кортежи), второй - поля кортежей, - например, в Вашем случае $row может быть равно array (array('2','Иван'), array('3','Дмитрий')) и т.п. Естественно, что обращение к элементу такого массива вернет массив.
В моем примере: в цикле используется функция mysql_fetch_row(), возвращающая кортежи таблицы-результата запроса, которая вызывается до тех пор, пока она возвращает значение (иначе - конец таблицы - выход из цикла). В теле цикла формируется строка HTML-таблицы для вывода данных (я использовал функции reset() и next(), чтобы не зависеть от имен столбцов таблицы-результата запроса).
Ответ отправил: Alex S.R. (статус: 1-ый класс)
Ответ отправлен: 13.06.2007, 21:16
Отвечает: HookEst
Здравствуйте, Слоква Алексей Сергеевич!
Все у Вас нормально, только цикл while - не закрыт - пропустили endwhile;
двоеточие после print - думаю просто опечатка
а mysql_fetch_array - возвращает одномерный массив, только каждое значение дублируется так, что можно обращатся к полям как по индексу, так и по имени.
Успехов.
Приложение:
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 14.06.2007, 10:50
Вопрос № 91.194
Здраствуйте! Задам еще раз вопрос.
Есть столбец в таблице, который называется FIO, в нем хранятся фамилия имя отчество (например, Иванов Иван Иванович).
Мне нужно получить два столбца, 1- фамилия (иванов)
2- имя отчество (иван иванович)
причем, фамилия должна разбиться по буквам, то есть каждая буква в фамилии должна храниться в своей отдельной ячейке. Например, фамилию Иванов, надо разбить по буквам: И в а н о в, И- в 1 ячейке, в - во 2 ячейке, а- в 3 ячейке и т.д.
точно также нужно поступить с именем и отчеством.
Отвечает: LanK
Здравствуйте, Кунафина Гульназ Ильдаровна!
То что Вы хотите сделать средствами чисто SQL ANSI 92 невозможно.
Увы, Вы не указали базу данных, в которой работаете.
Единственное решение, которое возможно на стороне базы данных написать "хранимую процедуру". В которой:
1) сосчитать место первого пробела в строке
2) вырезать из строки 1)
3) вырезать из строки всё что после 1)
4) подсчитать сколько символов в фамилии (хотя это мы и так знаем из п.1) -1
5) написать запрос по 4) количество столбцов...
6) вывести
НО1! Вы получите не ДВА столбца (!!) а Иванов (6символов) + ИО т.е. 7 столбцов.
НО2! А в случае Сидоров (7символов) + ИО т.е. 8 столбцов.
НО3! А еще есть составные фамилии... Салтыков-Щедрин... Федосеева-Шукшина как Вы поймете количество столбцов?
Поэтому необходимо, если это возможно переделать Вашу таблицу в таблицу удовлетворяющую стандартам реляционных баз данных. Т.е. один столбец Ф, второй И третий О, четвертый Уникальный идентификатор.
P.S. Выход из Вашей задачи ... есть получить этот один столбец и "разобрать" его на стороне клиента программными средствами, но увы это неудобно.
P.P.S. Рекомендую прочитать книгу Мартин Грабер Введение в SQL это самая простая книга о запросах и принципах баз данных, лучше ее не видел.