powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запрос
53 сообщений из 53, показаны все 3 страниц
запрос
    #37556799
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT cymma_chet, bid_cheta, dt_otk_ch ;  
  FROM vklad_banka 
    where  dt_otk_ch>{01.01.2011}  ;
         and dt_otk_ch<{31.03.2011};
       INTO table DepositRange
     index ON bid_cheta+cymma_chet
    BROWSE 


написал запрос
"Определить сумму всех вкладов в первом квартале текущего года по каждому виду вклада и отсортировать в порядке возрастания."
Но фокс ругается на там дат,подскажите как правильно написать?
...
Рейтинг: 0 / 0
запрос
    #37556900
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42,

1. В ланном запросе нет никакого суммирования, и данные берутся без учёта первого и последнего
дня квартала!

2. Скорее всего Вы используете неправильное выражение в индексе

index ON bid_cheta+cymma_chet
вид счёта - строка
сумма счёта - индекс
надо

index on bid_cheta+STR(cymma_chet,16,2)

3.Данный индекс неверен, поскольку сам вопрос подразумевает сортировку по сумме счетов, т.е.

index on STR(cymma_chet,16,2)+bid_cheta

4.Зачем нужен индекс, если запрос прекрасно отсортирует ваши данные

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
[SRC C++]SELECT cymma_chet, bid_cheta, dt_otk_ch ;  
FROM vklad_banka 
    where  dt_otk_ch>={01.01.2011}  ;
         and dt_otk_ch=<{31.03.2011};
ORDER BY 1, 2, 3;
       INTO table DepositRange
SELECT depositRange
    BROWSE 

[/SRC]
...
Рейтинг: 0 / 0
запрос
    #37556913
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT cymma_chet, bid_cheta, dt_otk_ch ;  
FROM vklad_banka 
    where  dt_otk_ch>={01.01.2011} and ;
         and dt_otk_ch=<{31.03.2011};
ORDER BY 1, 2, 3;
       INTO table DepositRange
SELECT depositRange
    BROWSE
...
Рейтинг: 0 / 0
запрос
    #37556934
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По умолчанию, в среде FoxPro используется настройка

Код: plaintext
1.
SET STRICTDATE TO 1



Эта настройка предполагает строгое написание констант типа Date. Причем в самом сообщении об ошибке отображается, какой именно формат константы ожидается. Это вид

{^ГГГГ-ММ-ДД}

Как следствие, Ваш запрос надо написать так

Код: plaintext
1.
2.
3.
4.
5.
SELECT cymma_chet, bid_cheta, dt_otk_ch ;  
  FROM vklad_banka ;
    where  dt_otk_ch>{^2011.01.01}  ;
         and dt_otk_ch<{^2011.31.03};
       INTO table DepositRange



Кроме того, для упорядочивания выборки используется опция ORDER BY и создание индекса здесь не нужно. А если речь идет о временной выбоорке, то и постоянную таблицу на диске тоже создавать не надо. Вполне достаточно будет временной таблицы (курсора). Ну, и про равенство границам дат Вам уже сказали

Тогда Ваш запрос примет вид

Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT cymma_chet, bid_cheta, dt_otk_ch ;  
  FROM vklad_banka ;
    where  dt_otk_ch BETWEEN {^2011.01.01} and {^2011.31.03} ;
       INTO CURSOR DepositRange NOFILTER

BROWSE
...
Рейтинг: 0 / 0
запрос
    #37557273
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT cymma_chet, bid_cheta, dt_otk_ch ;  
  FROM vklad_banka ;
    where  dt_otk_ch BETWEEN {^2011.01.01} and {^2011.31.03} ;
       INTO CURSOR DepositRange NOFILTER

BROWSE


фок ругается на дату.
...
Рейтинг: 0 / 0
запрос
    #37557277
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42,

тип поля dt_otk_ch посмотрите, ну и соответсвенно измените запрос
...
Рейтинг: 0 / 0
запрос
    #37557278
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alextashkWoolf42,

1. В ланном запросе нет никакого суммирования, и данные берутся без учёта первого и последнего
дня квартала!

2. Скорее всего Вы используете неправильное выражение в индексе

index ON bid_cheta+cymma_chet
вид счёта - строка
сумма счёта - индекс
надо

index on bid_cheta+STR(cymma_chet,16,2)

3.Данный индекс неверен, поскольку сам вопрос подразумевает сортировку по сумме счетов, т.е.

index on STR(cymma_chet,16,2)+bid_cheta

4.Зачем нужен индекс, если запрос прекрасно отсортирует ваши данные

Код: plaintext
1.
2.
3.
4.
[SRC C++]SELECT cymma_chet, bid_cheta, dt_otk_ch ;  
FROM vklad_banka 
    [SRC sql]where  dt_otk_ch>={01.01.2011}  ;
         and dt_otk_ch=<{31.03.2011};


ORDER BY 1, 2, 3;
INTO table DepositRange
SELECT depositRange
BROWSE

[/src][/SRC]

Ошибка: не корректно ведена команда
И фокс выводит весь список,без сортировки
...
Рейтинг: 0 / 0
запрос
    #37557281
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42,

прикрепите свою таблицу, посмотрю

но
1. задание вам дано вывести список счетов упорядоченный по сумме за 1 квартал
а Вы пытаетесь вывести список всех счетов открытых в 1-м квартале

2.Попробуйте так
Код: plaintext
1.
2.
3.
4.
5.
SELECT cymma_chet, bid_cheta, dt_otk_ch ;  
FROM vklad_banka ;
where  dt_otk_ch BETWEEN DATE(2011, 1, 1) and DATE(2011,3, 31) ;
ORDER BY 1, 2;
INTO CURSOR DepositRange NOFILTER
...
Рейтинг: 0 / 0
запрос
    #37557286
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
щас вообще не чего не выводит
так проще будет http://zalil.ru/32185874
...
Рейтинг: 0 / 0
запрос
    #37557290
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42,

ну так в этом диапазоне нет вкладов
попробуй
Код: plaintext
1.
2.
3.
4.
5.
SELECT cymma_chet, bid_cheta, dt_otk_ch ;  
FROM vklad_banka ;
where  dt_otk_ch BETWEEN DATE(2000, 1, 1) and DATE(2000,12, 31) ;
ORDER BY 1, 2;
INTO CURSOR DepositRange NOFILTER


он тебе даст за год
...
Рейтинг: 0 / 0
запрос
    #37557292
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дату изменить не проблема, как и добавить еще вкладов.)
он вывел 3 вклада за 2000 год,но без сортировки((
...
Рейтинг: 0 / 0
запрос
    #37557293
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а еще вопрос,как вывести заместо кода вклада,его название,если оно находится в другой таблице?
...
Рейтинг: 0 / 0
запрос
    #37557294
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42Дату изменить не проблема, как и добавить еще вкладов.)
он вывел 3 вклада за 2000 год,но без сортировки((

Очень даже с сортировкой - по сумме, сначало
20000
75000
1000000
...
Рейтинг: 0 / 0
запрос
    #37557295
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хм....ну щас попробую еще добавить вкладов
Глянь плиз форму нью_вклад, после записи 1 вклада у меня тексбокс(дата открытия вклада) меняется на обычный чаровский тип
...
Рейтинг: 0 / 0
запрос
    #37557296
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42а еще вопрос,как вывести заместо кода вклада,его название,если оно находится в другой таблице?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT cymma_chet, bid_cheta, dt_otk_ch, vud_vklad.naz_vklad ;  
FROM vklad_banka ;
LEFT OUTER JOIN vud_vklad;
ON vklad_banka.bid_cheta = vud_vklad.kod;
where  dt_otk_ch BETWEEN DATE(2000, 1, 1) and DATE(2000,12, 31) ;
ORDER BY 1, 2;
INTO CURSOR DepositRange NOFILTER
...
Рейтинг: 0 / 0
запрос
    #37557305
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT cymma_chet,dt_otk_ch,infor.fio,vud_vklad.naz_vklad;    
    FROM vklad_banka  ;  
    LEFT OUTER JOIN infor;
    LEFT OUTER JOIN vud_vklad;
    ON vklad_banka.kod_kl = infor.kod;
    ON vklad_banka.bid_cheta = vud_vklad.kod;
    where  
    INTO table DepositRange
 BROWSE 


этот код на кнопке
По приблизительному номеру счета определить всех вкладчиков по конкретному виду вклада.

я на форме вожу часть счета(1,2,3) цифры и в комбобоксе выбираю вид вклада.
как условие правильно написать?
...
Рейтинг: 0 / 0
запрос
    #37557411
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая у Вас версия FoxPro? Опция ON должна следовать сразу за JOIN.

select ...
from ...
join ... on ...
join ... on ...

Тот синтаксис, который приведен у Вас генирили построители запросов в старых версиях FoxPro. Если в отношении inner join это еще работало, то для left join это будет давать не корректный результат.
...
Рейтинг: 0 / 0
запрос
    #37557418
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, 9.0 версия ну у меня там ; стоят
...
Рейтинг: 0 / 0
запрос
    #37557420
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
он вообще результата не дает, при выхода с кнопки вылазит или некорректная команда или синтетическая ошибка
...
Рейтинг: 0 / 0
запрос
    #37557517
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Прекратите использовать для записи результата запроса таблицы (INTO TABLE). Это очень плохой стиль программирования. Вы оставляете после себя "мусор", который потом Вам же и придется разгребать. Хорошо еще, если этот "мусор" не приведет к появлению различных глюков. Для временных выборок следует использовать курсор (INTO CURSOR)

2. Поиск по фрагменту значения, в общем случае, это опция LIKE или функция LIKE()

Опция LIKE используется в условии WHERE команд SELECT-SQL примерно таким образом

Код: plaintext
1.
SELECT ... FROM ... WHERE MyField LIKE '%текст%'



Здесь в поле MyField ищется фрагмент "текст" справа и слева от которого может быть указано любое число символов. Знак процента как раз и указывает на то, что количество символов может быть любое

Функция Like() - это штатная функция FoxPro. В командах Select-SQL их также можно использовать. Правда не все. Это будет выглядеть следующим образом

Код: plaintext
1.
SELECT ... FROM ... WHERE LIKE('*текст*', MyField)



Здесь маска поиска и поле меняются местами, а символом, замещающим не определенное количество символов является уже звездочка

Есть еще частный случай поиска по фрагменту, когда точно известно, что искомый фрагмент - это первые символы. В этом случае при настройке SET ANSI OFF (это настройка по умолчанию) можно использовать простое равенство

Код: plaintext
1.
SELECT ... FROM ... WHERE MyField = 'текст'



Подобный запрос найдет все записи, где содержимое поля MyField начинается с символов 'текст'
...
Рейтинг: 0 / 0
запрос
    #37557541
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ, Если я напишу Where nomer_chet = ch правильно будет?
...
Рейтинг: 0 / 0
запрос
    #37557570
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Аааааааа
Код: plaintext
1.
Command contains unrecognized phrase/keyword

подскажите где ошибка???
...
Рейтинг: 0 / 0
запрос
    #37557573
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42Аааааааа
Код: plaintext
1.
Command contains unrecognized phrase/keyword

подскажите где ошибка???
Откуда же нам знать? Приведите хотя бы запрос при выполнении которого эта ошибка возникла. Как говорится в известном анекдоте "дай и мне шанс"
...
Рейтинг: 0 / 0
запрос
    #37557666
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМWoolf42Аааааааа
Код: plaintext
1.
Command contains unrecognized phrase/keyword

подскажите где ошибка???
Откуда же нам знать? Приведите хотя бы запрос при выполнении которого эта ошибка возникла. Как говорится в известном анекдоте "дай и мне шанс"
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 ch=thisform.text1.value
 
SELECT cymma_chet,dt_otk_ch,infor.fio,vud_vklad.naz_vklad;    
    FROM vklad_banka ;  
     LEFT OUTER JOIN infor ON vklad_banka.kod_kl = infor.kod;
    LEFT OUTER JOIN vud_vklad ON vklad_banka.bid_cheta = vud_vklad.kod;
    where  Where STR(nomer_chet) = ch;
   * LIKE(ch,STR(nomer_chet));*
    INTO table DepositRange;
 BROWSE 
 
 


я все о том же...(
...
Рейтинг: 0 / 0
запрос
    #37557675
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько ошибок

1. Два раза подряд ключевое слово Where
2. В FoxPro одну команду нельзя "разорвать" строкой комментария. В результате, у Вас отдельно команда SELECT и отдельная команда INTO. Не вставляйте комментарии в "середину" команд. Либо "до", либо "после"
3. Точка с запятой - это символ переноса команды. У Вас команда BROWSE записана как опция команды INTO

И еще, это менее принципиально, но, тем не менее, желательно указывать алиас таблицы у всех полей, участвующих в запросе. Это уменьшает неопределенность. Если я правильно понимаю, то все поля без алиасов относятся к таблице vklad_banka.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ch=thisform.text1.value
 
SELECT ;
    vklad_banka.cymma_chet,;
    vklad_banka.dt_otk_ch,;
    infor.fio,;
    vud_vklad.naz_vklad ;    
FROM vklad_banka ;  
LEFT OUTER JOIN infor ON vklad_banka.kod_kl = infor.kod ;
LEFT OUTER JOIN vud_vklad ON vklad_banka.bid_cheta = vud_vklad.kod ;
Where STR(vklad_banka.nomer_chet) = ch ;
INTO     CURSOR     DepositRange NOFILTER

BROWSE



Я бы Вам советовал на первых порах отделять команды друг от друга пустой строкой.
...
Рейтинг: 0 / 0
запрос
    #37557699
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМНесколько ошибок

1. Два раза подряд ключевое слово Where
2. В FoxPro одну команду нельзя "разорвать" строкой комментария. В результате, у Вас отдельно команда SELECT и отдельная команда INTO. Не вставляйте комментарии в "середину" команд. Либо "до", либо "после"
3. Точка с запятой - это символ переноса команды. У Вас команда BROWSE записана как опция команды INTO

И еще, это менее принципиально, но, тем не менее, желательно указывать алиас таблицы у всех полей, участвующих в запросе. Это уменьшает неопределенность. Если я правильно понимаю, то все поля без алиасов относятся к таблице vklad_banka.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ch=thisform.text1.value
 
SELECT ;
    vklad_banka.cymma_chet,;
    vklad_banka.dt_otk_ch,;
    infor.fio,;
    vud_vklad.naz_vklad ;    
FROM vklad_banka ;  
LEFT OUTER JOIN infor ON vklad_banka.kod_kl = infor.kod ;
LEFT OUTER JOIN vud_vklad ON vklad_banka.bid_cheta = vud_vklad.kod ;
Where STR(vklad_banka.nomer_chet) = ch ;
INTO     CURSOR     DepositRange NOFILTER

BROWSE



Я бы Вам советовал на первых порах отделять команды друг от друга пустой строкой.

т.е. в фоксе комментировать тоже надо с умом?
насчет команд учту:)
Where STR(vklad_banka.nomer_chet) = ch ;
я ввожу число, предположим 2-х значное(которое точно есть в полном номере счета) но мне все ровно ни чего не выводит.
А если я захочу добавить еще 1 условие
vd=vud_vklad.kod(на форме я ввожу еще название вклада)
.....
.....
Where STR(vklad_banka.nomer_chet) = ch .and. vklad_banka.bid_cheta = vd;

правильно будет?
...
Рейтинг: 0 / 0
запрос
    #37557763
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42Where STR(vklad_banka.nomer_chet) = ch ;
я ввожу число, предположим 2-х значное(которое точно есть в полном номере счета) но мне все ровно ни чего не выводит.
"Точно есть" где? В смысле, в каком месте счета? Это первый символ или может быть где угодно? Приведенный Вами синтаксис предполагает, что речь идет о первом символе. Только вот, функция STR() при переводе числа в строку автоматически дополняет его ведущими пробелами. В данном случае до 10 символов. Как следствие, если номер счета имеет меньше 10 символов, то Вы сравниваете пробел и символ "2". Естественно, ничего не находите.

Кстати, если речь идет о банковском счете, то они обычно 20-значные, а это значит, что, во-первых, поле для его хранения не может быть числовым. FoxPro не может хранить числа с точностью выше 16 значащих цифр. А, во-вторых, даже если Вы записали его как число, то функция STR() без указания размерности, по-умолчанию, преобразует его в строку из 10 символов, что опять-таки приведет к искажениям результата.

Woolf42А если я захочу добавить еще 1 условие
vd=vud_vklad.kod(на форме я ввожу еще название вклада)
.....
.....
Where STR(vklad_banka.nomer_chet) = ch .and. vklad_banka.bid_cheta = vd;

правильно будет?
Вообще-то, проще попробовать. Впрочем, синтаксически это правильно.
...
Рейтинг: 0 / 0
запрос
    #37557962
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМWoolf42Where STR(vklad_banka.nomer_chet) = ch ;
я ввожу число, предположим 2-х значное(которое точно есть в полном номере счета) но мне все ровно ни чего не выводит.
"Точно есть" где? В смысле, в каком месте счета? Это первый символ или может быть где угодно? Приведенный Вами синтаксис предполагает, что речь идет о первом символе. Только вот, функция STR() при переводе числа в строку автоматически дополняет его ведущими пробелами. В данном случае до 10 символов. Как следствие, если номер счета имеет меньше 10 символов, то Вы сравниваете пробел и символ "2". Естественно, ничего не находите.

Кстати, если речь идет о банковском счете, то они обычно 20-значные, а это значит, что, во-первых, поле для его хранения не может быть числовым. FoxPro не может хранить числа с точностью выше 16 значащих цифр. А, во-вторых, даже если Вы записали его как число, то функция STR() без указания размерности, по-умолчанию, преобразует его в строку из 10 символов, что опять-таки приведет к искажениям результата.

Woolf42А если я захочу добавить еще 1 условие
vd=vud_vklad.kod(на форме я ввожу еще название вклада)
.....
.....
Where STR(vklad_banka.nomer_chet) = ch .and. vklad_banka.bid_cheta = vd;

правильно будет?
Вообще-то, проще попробовать. Впрочем, синтаксически это правильно.

№ счета у меня 4 значный, щас попробую еще с лайк по мучится
...
Рейтинг: 0 / 0
запрос
    #37558217
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
За место
Код: plaintext
1.
2.
Where STR(vklad_banka.nomer_chet) = ch ;[SRC sql]
Ставлю 

LIKE(*ch*, STR(vklad_banka.nomer_chet))[/SRC]
и фокс ругается
...
Рейтинг: 0 / 0
запрос
    #37558386
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42,

Код: plaintext
1.
Where ch $ STR(vklad_banka.nomer_chet)
...
Рейтинг: 0 / 0
запрос
    #37558396
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alextashk,

Спс
теперь выводится пустая табличка (
...
Рейтинг: 0 / 0
запрос
    #37558399
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alextashk,

подскажи в чем касяк,почему не работает(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ch=thisform.text1.value
 
SELECT ;
    vklad_banka.cymma_chet,;
    vklad_banka.dt_otk_ch,;
    infor.fio,;
    vud_vklad.naz_vklad ;    
FROM vklad_banka ;  
LEFT OUTER JOIN infor ON vklad_banka.kod_kl = infor.kod ;
LEFT OUTER JOIN vud_vklad ON vklad_banka.bid_cheta = vud_vklad.kod ;
Where ch $ vklad_banka.nomer_chet;
INTO CURSOR     DepositRange NOFILTER

BROWSE
...
Рейтинг: 0 / 0
запрос
    #37558439
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему это должно работать? По сути, Вы выполняете такой поиск

Код: plaintext
1.
?'2' $ 123



Т.е. ищите символьную строку внутри числа. Естественно, получаете ошибку. Сначала надо привести оба сравниваемых выражения к символьному виду.

Код: plaintext
1.
?'2' $ str(123)
...
Рейтинг: 0 / 0
запрос
    #37558442
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а Вы уверены, что переменная ch не содержит ведущих или концевых пробелов? Попробуйте сделать так

Код: plaintext
1.
ch = AllTrim(thisform.text1.value)
...
Рейтинг: 0 / 0
запрос
    #37558664
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. ищите символьную строку внутри числа. Естественно, получаете ошибку. Сначала надо привести оба сравниваемых выражения к символьному виду.

Код: plaintext
1.
?'2' $ str(123)

[/quot]

у меня ch и nomer cheta чаровского типа, пробелов не должно быть т.к. всего 4 символа выделил.
...
Рейтинг: 0 / 0
запрос
    #37558667
OldChukchi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. что за ошибка?
2. ну не сложно ведь исправить запрос на что-то вот такое:
... WHERE AT(ALLTRIM(ch),vklad_banka.nomer_chet)#0 ;

и посмотреть на результат, ага? :)
...
Рейтинг: 0 / 0
запрос
    #37558687
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все исправил, работает:)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SELECT ;
    vklad_banka.cymma_chet,;
    vklad_banka.dt_otk_ch,;
    vklad_banka.nomer_chet,;
    infor.fio,;
    vud_vklad.naz_vklad ;    
FROM vklad_banka ;  
LEFT OUTER JOIN infor ON vklad_banka.kod_kl = infor.kod ;
LEFT OUTER JOIN vud_vklad ON vklad_banka.bid_cheta = vud_vklad.kod ;
Where index ON kod_kl TO kod
      scan WHILE (!EOF())
      p = vklad_banka.kod_kl
      k=0
      DO WHILE  p = vklad_banka.kod_kl 
      k=k+1
      skip 
      ENDDO 
      IIF (k>=2,;
INTO CURSOR DepositRange NOFILTER, )
ENDSCAN 
BROWSE



Надо вывести тех вкладчиков у которых более 2 вкладов,
...
Рейтинг: 0 / 0
запрос
    #37558700
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
написал как смог,больше не хватило мозгов)
...
Рейтинг: 0 / 0
запрос
    #37559491
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42у меня ch и nomer cheta чаровского типа, пробелов не должно быть т.к. всего 4 символа выделил.
"Не должно быть" и "нет" - это "две большие разницы". Хотя бы смотрели в отладчике на значения, ну или количество символов?

PS: Вы бы для начала попробовали то, что Вам предлагают, а потом уже выдумывали бы всякие ужасы. Неужели так трудно написать

Код: plaintext
1.
ch = AllTrim(thisform.text1.value)
...
Рейтинг: 0 / 0
запрос
    #37560009
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42Все исправил, работает:)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SELECT ;
    vklad_banka.cymma_chet,;
    vklad_banka.dt_otk_ch,;
    vklad_banka.nomer_chet,;
    infor.fio,;
    vud_vklad.naz_vklad ;    
FROM vklad_banka ;  
LEFT OUTER JOIN infor ON vklad_banka.kod_kl = infor.kod ;
LEFT OUTER JOIN vud_vklad ON vklad_banka.bid_cheta = vud_vklad.kod ;
Where index ON kod_kl TO kod
      scan WHILE (!EOF())
      p = vklad_banka.kod_kl
      k=0
      DO WHILE  p = vklad_banka.kod_kl 
      k=k+1
      skip 
      ENDDO 
      IIF (k>=2,;
INTO CURSOR DepositRange NOFILTER, )
ENDSCAN 
BROWSE





у меня взрыв мозга, всю клавиатуру и дисплей забрызгал!

по поводу 2-х счетов, надеюсь программа не для СберБанка!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT infor.fio, COUNT() as nKol ;    
FROM  infor ;  
LEFT OUTER JOIN vklad_banka ON infor.kod = vklad_banka.kod_kl  ;
ORDER BY 1;
GROUP BY 1;
HAVING BY nKol > 1;
INTO CURSOR curList
...
Рейтинг: 0 / 0
запрос
    #37560304
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot alextashk]Woolf42Все исправил, работает:)




у меня взрыв мозга, всю клавиатуру и дисплей забрызгал!

по поводу 2-х счетов, надеюсь программа не для СберБанка!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT infor.fio, COUNT() as nKol ;    
FROM  infor ;  
LEFT OUTER JOIN vklad_banka ON infor.kod = vklad_banka.kod_kl  ;
ORDER BY 1;
GROUP BY 1;
HAVING BY nKol > 1;
INTO CURSOR curList


Написал как сумел:)


В селекте ошибку пишет "Мисинг экспесион"
...
Рейтинг: 0 / 0
запрос
    #37560431
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Woolf42]alextashkпропущено...

Написал как сумел:)


В селекте ошибку пишет "Мисинг экспесион"

COUNT(*)
...
Рейтинг: 0 / 0
запрос
    #37560526
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNG,
Спасибо
Блин... щас ругается на
Код: plaintext
1.
HAVING BY nKol > 1;


"Command contains unrecognized phrase/keyword"
...
Рейтинг: 0 / 0
запрос
    #37560537
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите еще почему после добавление 1 вклада, у меня текстбоксы типа нумерик и дата меняются в чаровский тип,именно после их очистки?
...
Рейтинг: 0 / 0
запрос
    #37560657
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42IgorNG,
Спасибо
Блин... щас ругается на
Код: plaintext
1.
HAVING BY nKol > 1;


"Command contains unrecognized phrase/keyword"

Блин, ну справку открой, почитай про назначение опций
...
Рейтинг: 0 / 0
запрос
    #37560661
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42,

Опция HAVING не использует BY
...
Рейтинг: 0 / 0
запрос
    #37560664
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42Подскажите еще почему после добавление 1 вклада, у меня текстбоксы типа нумерик и дата меняются в чаровский тип,именно после их очистки?

А как ты их чистишь? THISFORM.Text1.Value = "" ?
...
Рейтинг: 0 / 0
запрос
    #37560774
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IgorNGWoolf42Подскажите еще почему после добавление 1 вклада, у меня текстбоксы типа нумерик и дата меняются в чаровский тип,именно после их очистки?

А как ты их чистишь? THISFORM.Text1.Value = "" ?

*thisform.Combo1.Value=' '
thisform.Text1.Value=' '
thisform.Text2.Value=' '
*thisform.Combo2.Value=' '
thisform.Text3.Value=' '

если убрать очистку,то типы не меняются,тогда приходится самому очищать
...
Рейтинг: 0 / 0
запрос
    #37560832
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42,

Если символьное поле, то
thisform.Text1.Value=' '
Если числовое, то
thisform.Text1.Value=0
или
thisform.Text1.Value=0.00
...
Рейтинг: 0 / 0
запрос
    #37560979
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если это дата?.
...
Рейтинг: 0 / 0
запрос
    #37560997
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Woolf42,

Соответственно, пустую дату или текущую, в зависимости от того, что нужно
...
Рейтинг: 0 / 0
запрос
    #37561017
Woolf42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал в поле дату сегодняшнюю,что бы не мучиться)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT Infor.fio, Infor.dom_tel, Vud_vklad.naz_vklad,;
  Vklad_banka.nomer_chet, Vklad_banka.cymma_chet, Vklad_banka.dt_otk_ch,;
  COUNT(DISTINCT Infor.fio) AS &#234;&#238;&#235;&#232;&#247;&#229;&#241;&#242;&#226;&#238;;
 FROM ;
     praktikabd!infor ;
    INNER JOIN praktikabd!vklad_banka ;
   ON  Infor.kod = Vklad_banka.kod_kl ;
    INNER JOIN praktikabd!vud_vklad ;
   ON  Vud_vklad.kod = Vklad_banka.bid_cheta;
 WHERE  Vklad_banka.bid_cheta >= ( 2 );
 GROUP BY Infor.fio, Infor.dom_tel, Vud_vklad.naz_vklad,;
  Vklad_banka.nomer_chet, Vklad_banka.cymma_chet, Vklad_banka.dt_otk_ch;
 ORDER BY 7


попробовал через мастер написать,он мне выводит всех у кого 2 и более вкладов и несколько у кого 1 вклад,как этих у кого 1 убрать?)
...
Рейтинг: 0 / 0
запрос
    #37561903
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT Infor.fio, Infor.dom_tel, Vud_vklad.naz_vklad,;
  Vklad_banka.nomer_chet, Vklad_banka.cymma_chet, Vklad_banka.dt_otk_ch,;
  COUNT(DISTINCT Infor.fio) AS nkol;
 FROM ;
     praktikabd!infor ;
    INNER JOIN praktikabd!vklad_banka ;
   ON  Infor.kod = Vklad_banka.kod_kl ;
    INNER JOIN praktikabd!vud_vklad ;
   ON  Vud_vklad.kod = Vklad_banka.bid_cheta;
 WHERE  Vklad_banka.bid_cheta >= ( 2 );
 GROUP BY Infor.fio, Infor.dom_tel, Vud_vklad.naz_vklad,;
  Vklad_banka.nomer_chet, Vklad_banka.cymma_chet, Vklad_banka.dt_otk_ch;
HAVING nKol > 1;
 ORDER BY 7
...
Рейтинг: 0 / 0
53 сообщений из 53, показаны все 3 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]