Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [FOXPRO] Открытие таблицы с описанием публикаций, Создать экранную форму 
:(
    Опции темы
camakob
Дата 28.12.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 8.1.2008

Репутация: нет
Всего: нет



Добрый день!
Есть база данных, где есть символьное поле Name длиной 100 символов, мне нужно выбрать те записи, где содержатся в этом поле слова "системы поддержки решений". Таких записей может быть или одна или несколько. Эту опреацию нужно реализовать в виде экранной формы. Кто что может посоветовать?
PM MAIL   Вверх
Данкинг
Дата 28.12.2009, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Что такое "экранная форма", не понял? Запрос же 
Код

select * from dbf() where 'системы поддержки решений'$name

Цитата(camakob @  28.12.2009,  10:49 Найти цитируемый пост)
символьное поле Name длиной 100 символов

К теме не относится, но всё же: а почему не по максимуму - 254 символа? Мало ли, что туда вписываться будет.

Это сообщение отредактировал(а) Данкинг - 28.12.2009, 12:20


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
camakob
Дата 28.12.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 8.1.2008

Репутация: нет
Всего: нет



Спасибо за ответ. Да это дочке в институте дали. Может экранная форма это синоним слова запрос. Я последний раз с продукцией фирмы Fox Software(до поглощения Micrisoft) сталкивался лет 20 назад, писал маленькие программки на Foxbase, до этого на Clipper и dbase 3+(вроде Карат назывался по-русски), а руссифицированный Clipper назывался по-русски ПЭВМ-база, в Калинине(Тверь) была фирма вроде "Цетрпрограммсистем", она клепала. Эх молодость, молодость!!! 
Разница конечно большая. Я написал примерно следующий код:

close data all
clear
bd_name="     LITER.DBF     "
@1,3 say "Укажите БД:" get bd_name
read
bd_name=ALLTRIM(bd_name)
if !FILE(bd_name)
  clear
  @3,3 say "НЕТ ТАКОЙ БАЗЫ ДАННЫХ!"
  return
endif

select * from dbf() where 'системы поддержки решений' $name

Close Databases all

Соответственно у меня пустая форма выскакивает. Может Нужно наверное вставить после select что-то типа print или display? 
И второй пункт: выбор из списка одного из представленных в таблице издательств PUBLISHER(база данных
это книги(название, издательство, год выпуска и т. д.).
Подскажите если не затруднит, а то из книг только Foxpro 2.0 1993 года выпуска(А.А.Попов) и в магазин жена гонит за продуктами. 
PM MAIL   Вверх
Данкинг
Дата 28.12.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(camakob @  28.12.2009,  13:02 Найти цитируемый пост)
Может экранная форма это синоним слова запрос. 

Так уточнить тогда надо. По-моему, на клиппере и фоксе 2.6 были такие какие-то понятия.

Цитата(camakob @  28.12.2009,  13:02 Найти цитируемый пост)
руссифицированный Clipper

Даже такой был? smile Мой папа тоже что-то писал на Клиппере в 80-х, но на "нормальном", а не русифицированном. smile 

Цитата(camakob @  28.12.2009,  13:02 Найти цитируемый пост)
@1,3 say "Укажите БД:" get bd_name
read

Это же клипперные операторы, а у нас речь о фоксе всё же. Там есть InputBox, например (в общем-то, справка у фокса отличная, описаны все операторы с массой примеров).

В нашем случае должно быть как-то так:
Код

d=getfile('dbf')
if empt(d)
 cancel
endif
use &d in 10
sele 10
select * from dbf() where 'системы поддержки решений' $name


Цитата(camakob @  28.12.2009,  13:02 Найти цитируемый пост)
И второй пункт: выбор из списка одного из представленных в таблице издательств PUBLISHER(база данных
это книги(название, издательство, год выпуска и т. д.).

Не понял, что требуется. smile 

Цитата(camakob @  28.12.2009,  13:02 Найти цитируемый пост)
Foxpro 2.0 1993 года выпуска

Ужас какой, наверное. smile В 1993 я ещё даже GWBasic'а не знал, а тут уже фокс.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
camakob
Дата 28.12.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 8.1.2008

Репутация: нет
Всего: нет



Спасибо, я сделал так:
close data all
clear
bd_name="     LITER.DBF     "
@1,3 say "Укажите БД:" get bd_name   
read
bd_name=ALLTRIM(bd_name)
if !FILE(bd_name)
  clear
  @3,3 say "НЕТ ТАКОЙ БАЗЫ ДАННЫХ!"
  return
ENDIF

use &bd_name alias bd in 0
select bd
*** a)открытие таблицы LITER.DBF с описанием публикаций по системам поддержки решений
select * from dbf() where 'Системы поддержки принятия решений' $name
*** b)выбор из списка одного из представленных в таблице издательств (поле PUBLISHER)
***go top
***izdat="Наука"
***@3,1 say "Введите название издательства" get izdat
go top
clear
select * from dbf() where 'Наука' $publisher
*** c)для всех записей, в поле PUBLISHER которых присутствует указанное пользователем 
*** издательство, вывести на экран таблицу с указанием года и числа публикаций (при 
*** пустом вводе издательства должна быть выведена таблица по всем издательствам);

Close Databases all

Только у меня если первый запрос нормальный выходит, то второй почему-то пустой, хотя в БД где-то 15 книг, выпущенных издательством "Наука", может после первого запроса закрыть базу и снова открыть?

Я тоже потом немного на американском Clipperе программировал. Если Ваш папа работал на ЕС ЭВМ(были такие большие машины, передранные у американцев), то он может сталкивался с СУБД "ADABAS"(Триада), классная была вещь. 
PM MAIL   Вверх
Данкинг
Дата 28.12.2009, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(camakob @  28.12.2009,  18:04 Найти цитируемый пост)
Только у меня если первый запрос нормальный выходит, то второй почему-то пустой, хотя в БД где-то 15 книг, выпущенных издательством "Наука",

Может быть, они в разных регистрах написаны? Конечно, в идеале следует приводить к одному регистру:
Код

select * from dbf() where 'НАУКА' $upper(publisher)


Цитата(camakob @  28.12.2009,  18:04 Найти цитируемый пост)
то он может сталкивался с СУБД "ADABAS"(Триада), классная была вещь.  

Нет, ничего такого не помню. Помню, была у него тетрадка во всякими Клипперными операторами. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
camakob
Дата 28.12.2009, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 8.1.2008

Репутация: нет
Всего: нет



Спасибо. Только UPPER не помогает, им преподаватель дал набитую базу данных, там если в издательстве "Наука", то именно все слова русскими буквами так и набиты. Будем дальше экспериментировать. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0804 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.