Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / RecordSource and SQL / 16 сообщений из 16, страница 1 из 1
23.05.2005, 19:42
    #33080912
RecordSource and SQL
Здорово парни! У менэ вопрос, как свойству RecordSource присвоить SQL- запрос,(синтаксис какой)
...
Рейтинг: 0 / 0
23.05.2005, 20:10
    #33080937
RecordSource and SQL
Выдает синтакс. ошибку, подскажите что не так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
ThisForm.Pageframe1.Page5.Grid1.RecordSource = "SELECT Klienty.familia AS фамилия, Klienty.imy AS имя,;
  Klienty.otchestvo AS отчество, Klienty.nomer_pasporta AS номер,;
  Kreditnoe_soglashenie.itog_prpcent AS итого,;
  Kreditnoe_soglashenie.datasostav AS дата, Srokkredita.srok AS срок,;
  Vid_kredita.nazvanie AS вид,;
  Kreditnoe_soglashenie.summa_kredita AS сумма;
 FROM ;
     data1!klienty ;
    INNER JOIN data1!kreditnoe_soglashenie ;
   ON  Klienty.cod_klienta = Kreditnoe_soglashenie.cod_klienta ;
    INNER JOIN data1!srokkredita ;
   ON  Srokkredita.cod_sroka = Kreditnoe_soglashenie.cod_sroka ;
    INNER JOIN data1!vid_kredita ;
   ON  Vid_kredita.cod_vida = Kreditnoe_soglashenie.cod_vida;
 WHERE  Klienty.familia = ( "Си" );
 ORDER BY Klienty.familia"
 
...
Рейтинг: 0 / 0
23.05.2005, 20:24
    #33080951
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource and SQL
FROM... ???
...
Рейтинг: 0 / 0
23.05.2005, 20:41
    #33080960
Sergey Sizov.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource and SQL
Да синтаксис он и в Африке синтаксис... А потому одну какую-нибудь пару кавычек замени на что-нибудь другое, например [] :)

Нельзя внутри текстовой строки использовать те же ограничители, что и ограничители самой строки. Если испольpуешь снаружи двойные кавычки (" "), то в нутри строки их использовать нельзя, а надо воспользоваться или квадратными скобками ([]), или одинарными кавычками (' ').
...
Рейтинг: 0 / 0
23.05.2005, 20:54
    #33080973
RecordSource and SQL
Заменил кавычки, вылазиет окошко "В командной строке использована фраза, начинающаяся с недопустимого ключевого слова."
...
Рейтинг: 0 / 0
23.05.2005, 21:07
    #33080980
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource and SQL
"Пособие для начинающих"

Символьные поля, переменные памяти и константы

В FoxPro существует отличия в предельно допустимой длине символьных данных в зависимости от того, о чем идет речь: поле таблицы, переменной памяти или константе

Ну, с полями таблицы все ясно. Их предельная длина определяется собственно размерностью поля. Однако размерность поля не может превышать 254 символов. Для memo-полей объем не может превышать 2ГБ (2 гигабайта - это 2 и 9 нулей символов).

Длина символьной константы не может превышать 255 символов

Длина символьной переменной теоретически не может превышать 16,777,184 символов. "Теоретически", потому, что при определенных условиях все-таки может. Просто за последствия такого превышения никто не отвечает.

Отдельно следует остановиться на отличии символьной константы от символьной переменной. Начинающие программисты очень часто получают сообщение об ошибке "Command contains unrecognized phrase/keyword (Error 36)" именно в силу непонимания этой разницы.

В FoxPro для написания символьных констант можно использовать 3 символа: одинарные кавычки, двойные кавычки, квадратные скобки. В чем отличие символьной константы от символьной переменной проще объяснить на примере. Словами получится долго и невнятно. Например:

Код: plaintext
1.
LOCAL lcString
lcString = 'Начало строки' + " середина строки " + [окончание строки]


Так вот, здесь то, что записано в кавычках и квадратных скобках - это 3 символьные константы, а lcString - это одна символьная переменная

Вообще-то, лично мне трудно представить, как можно написать одну символьную константу длиной больше 255 символов. Точнее написать-то такое можно, но как потом это можно редактировать! Получится совершенно не "читабельный" текст. Я рекомендовал бы разбивать длинные символьные константы на небольшие фрагменты с тем, чтобы каждый отдельный фрагмент целиком помещался в окне редактирования. Примерно так:

Код: plaintext
1.
2.
3.
LOCAL lcString
lcString = "Начало строки"+;
      " середина строки "+;
      "окончание строки"


В FoxPro нет специальных управляющих символов, как, например, в C используется обратный слэш. Поэтому, если Вам надо использовать кавычки не как границу символьной константы, а как собственно символ, то просто обрамляйте их кавычками другого типа:

Код: plaintext
?[ЗАО "Рога и копыта"]


Следует всегда помнить, что FoхPro отличается определенной "самостоятельностью" в конвертации данных. Применительно к символьным данным это проявляется в том, что если Вы попытаетесь записать в символьное поле больше символов, чем позволяет его размерность, то ошибки это не вызовет, просто "лишние" символы будут отброшены без каких-либо дополнительных сообщений об ошибках.

Код: plaintext
1.
2.
CREATE CURSOR test (test C( 5 ))
INSERT INTO test (test) VALUES ("1234567890")
?test.test
...
Рейтинг: 0 / 0
24.05.2005, 00:38
    #33081067
RecordSource and SQL
Спасибо за помощь! Все сделал как вы сказали - работает, тоько одно но.
После выполнения этой команды у меня появляется отдельная таблица с результатом запроса, а как сделать что бы у меня результаты сразу появлялись в Гриде.?
И как правильно записать:
Код: plaintext
1.
WHERE  Klienty.familia = ( "Си" )
чтобы вместо этого у меня было что-то типа
Код: plaintext
1.
WHERE  Klienty.familia = ThisForm.Text1.Value
...
Рейтинг: 0 / 0
24.05.2005, 09:11
    #33081242
Glyba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource and SQL
Чтобы не появлялось броуза с результатом запроса, нужно, чтобы в SELECT было INTO, даже если тебе не нужен этот алиас.
...
Рейтинг: 0 / 0
24.05.2005, 09:37
    #33081284
RecordSource and SQL
А примерчик прстеникий с INTO?
...
Рейтинг: 0 / 0
24.05.2005, 09:42
    #33081291
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource and SQL
Крутой_НольА примерчик прстеникий с INTO?
А самому HELP почитать?

SELECT ... FROM ... INTO CURSOR curTmp NOFILTER ...

При выходе из формы закрыть уже не нужный курсор

USE IN curTmp
...
Рейтинг: 0 / 0
24.05.2005, 13:29
    #33082042
RecordSource and SQL
А курсор это надо сначало созжавать в базе или нет?
...
Рейтинг: 0 / 0
24.05.2005, 14:00
    #33082144
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource and SQL
...
Рейтинг: 0 / 0
24.05.2005, 15:02
    #33082308
RecordSource and SQL
Вот што написал
Не работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
 ThisForm.Pageframe1.Page5.Grid1.RecordSource = "SELECT Klienty.familia AS фамилия, " + ;
  "Klienty.imy AS имя, " + ;
  "Klienty.otchestvo AS отчество, Klienty.nomer_pasporta AS номер_паспорта, " + ;
  "Kreditnoe_soglashenie.itog_prpcent AS итого, " + ;
  "Kreditnoe_soglashenie.datasostav AS дата_составления, Srokkredita.srok AS срок_погашения, " + ;
  "Vid_kredita.nazvanie AS вид_кредита, " + ;
  "Kreditnoe_soglashenie.summa_kredita AS сумма_кредита " + ;
 "FROM " + ;
  "INTO CURSOR curTmp NOFILTER " + ;
     "data1!klienty " + ;
    "INNER JOIN data1!kreditnoe_soglashenie " + ;
   "ON  Klienty.cod_klienta = Kreditnoe_soglashenie.cod_klienta " + ;
    "INNER JOIN data1!srokkredita " + ;
   "ON  Srokkredita.cod_sroka = Kreditnoe_soglashenie.cod_sroka " + ;
    "INNER JOIN data1!vid_kredita " + ;
   "ON  Vid_kredita.cod_vida = Kreditnoe_soglashenie.cod_vida " + ;
 "WHERE  Klienty.familia = ( [Си] ) " + ;
 "ORDER BY Klienty.familia"
 
...
Рейтинг: 0 / 0
24.05.2005, 15:06
    #33082316
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RecordSource and SQL
Слушай, ну прочитай HELP по команде Select-SQL. Невозможно же постоянно поправлять элементарнейшие ошибки. Тут даже особого знания не нужно. Элементарная логика. Смотри, что ты написал:


"FROM " + ;
"INTO CURSOR curTmp NOFILTER " + ;
"data1!klienty " + ;

Как ты себе это представляешь? Что тут FROM?
...
Рейтинг: 0 / 0
24.05.2005, 15:29
    #33082378
RecordSource and SQL
Ой в натуре! Наверное надо отдохнуть, а то скоро совсем крыша педет! Спасибо тебе огромное ВладимирМ!
...
Рейтинг: 0 / 0
24.05.2005, 16:26
    #33082493
RecordSource and SQL
Ура!!!! Получилось!!!!
INTO надо в самую последнюю очередь писать
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / RecordSource and SQL / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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