|
v7: 1CPP SELECT | ☑ | ||
---|---|---|---|---|
0
DES
13.09.12
✎
14:54
|
Подскажите примерчиком, как выбрать (типа SELECT * FROM Справочник.Абоненты) из справочника (база-DBF)
по ODBC VFP |
|||
1
ДенисЧ
13.09.12
✎
14:54
|
а на родном форуме не смотрел? ТАм этого добра, как...
|
|||
2
DES
13.09.12
✎
14:55
|
нету примера
не идет в общем, в частности понятно |
|||
3
DES
13.09.12
✎
14:55
|
ИБ=СоздатьОбъект("ODBCDataBase");
ИБ.ПрисоединитьИБ(КаталогИБ()); рс=СоздатьОбъект("ODBCRecordset"); рс.УстБД(ИБ); ТекстЗапроса="SELECT FROM Справочник.Абоненты"; Результат=рс.ВыполнитьИнструкцию(ТекстЗапроса); |
|||
6
ДенисЧ
13.09.12
✎
14:56
|
SELECT * FROM $Справочник.Абоненты
|
|||
7
ДенисЧ
13.09.12
✎
14:57
|
наконец-то :-)
|
|||
8
DES
13.09.12
✎
14:58
|
{D:\1C\_TBOX.ERT(19)}: Ошибка соединения: State IM001, native 0, message [Microsoft][Диспетчер драйверов ODBC] Драйвер не поддерживает данную функцию
|
|||
9
DES
13.09.12
✎
14:58
|
не подключается
|
|||
10
mista2012-09-11
13.09.12
✎
14:58
|
ДБФ=СоздатьОбъект("XBase");
ДБФ.ОткрытьФайл(ИмяФайлаЗагрузки); ДБФ.КодоваяСтраница(0); ДБФ.Первая(); Пока ДБФ.ВКонце()=0 Цикл ВсегоСтрок=ВсегоСтрок+1; ДатаВыгрузки = ДБФ.DATE_OF; //*** обработка даты ДатаВыгрузки=Дата(Сред(ДатаВыгрузки,7,2)+"."+Сред(ДатаВыгрузки,5,2)+"."+Сред(ДатаВыгрузки,1,4)); ПосЕМИТ = ДБФ.POS_EMIT; ПосИД = ДБФ.POS_ID; ПОСимя = СокрЛП(ДБФ.POS_NAME); КлиентИД = ДБФ.CLNT_ID; КлиентТип = ДБФ.CLNT_TYPE; КлиентИмя = ДБФ.CLNT_NAME; ТопливоИД =ДБФ.SRV_ID; ТопливоИмя =ДБФ.SRV_NAME; Количество =ДБФ.AMOUNT; Цена =ДБФ.PRICE; Сумма =ДБФ.SUMPRICE; ТД.НоваяСтрока(); ТД.Дата = ДатаВыгрузки; ТД.Склад = ПОСимя; //********************************************************** ТД.СкладЕмит = ПосЕМИТ; ТД.КодОсн=КлиентИД; //*** ПРЕОБРАЗОВАТЬ ТД.КодТов=ТопливоИД; //*** ПРЕОБРАЗОВАТЬ ТД.Объем=(-1)*Количество; //*** ПРЕОБРАЗОВАТЬ //ТД.Цена =Цена; ТД.Сумма=(-1)*Сумма; //*** ПРЕОБРАЗОВАТЬ ТД.Цена = Цена; Сообщить("Дата: "+ДатаВыгрузки+" "+ПосЕМИТ+"*****"+ПОСимя+"***"+КлиентИД+"***"+КлиентТип+"***"+КлиентИмя+"-----"+ТопливоИД+". . . "+ТопливоИмя+" кол-во:"+Количество+" цена "+Цена+" сумма "+Сумма); ДБФ.Следующая(); КонецЦикла; |
|||
11
Mikeware
13.09.12
✎
14:58
|
(7)
-Дяденька, а хотите я вам политический анекдот расскажу? -- мальчикт, ты что!? я же милиционер!! - Ничего страшного, я вам его три раза расскажу!!! © |
|||
12
DES
13.09.12
✎
15:01
|
(10) это не из этой оперы
|
|||
13
Ёпрст
13.09.12
✎
15:01
|
тоже что ли поучаствовать ?
|
|||
14
Ёпрст
13.09.12
✎
15:04
|
ОлеДБ = СоздатьОбъект("OLEDBData");
Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ() + ";Mode=ReadWrite;Collating Sequence=MACHINE"; Рез = ОлеДБ.Соединение(Соединение); Запрос = ОлеДБ.СоздатьКоманду(); Запрос.Выполнить("EXECSCRIPT('SET ANSI OFF')"); Запрос.Выполнить("EXECSCRIPT('SET REPROCESS TO 60 SECONDS')"); Запрос.Выполнить("EXECSCRIPT('SET REFRESH TO 0,-1')"); Запрос.Выполнить("Exec('SET TABLEVALIDATE TO 0')");// Отключили блокировки Запрос = ОлеДБ.СоздатьКоманду(); Запрос.ВыполнитьИнструкцию("select * from $Справочник.Абоненты").ВыбратьСтроку(); |
|||
15
DES
13.09.12
✎
15:06
|
не по оле
|
|||
16
Ёпрст
13.09.12
✎
15:07
|
(15) это не оле
|
|||
17
Ёпрст
13.09.12
✎
15:08
|
еще так можно:
Попытка база = СоздатьОбъект("SQLiteBase"); Исключение ЗагрузитьВнешнююКомпоненту("1sqlite.dll"); база = СоздатьОбъект("SQLiteBase"); КонецПопытки; база.Открыть(":memory:"); запрос = база.НовыйЗапрос(); запрос.ВыполнитьЗапрос("select * from [Справочник.Абоненты]").ВыбратьСтроку(); |
|||
18
DES
13.09.12
✎
15:09
|
Запрос.ВыполнитьИнструкцию("select * from $Справочник.Абоненты").ВыбратьСтроку();
{D:\1C\_TBOX.ERT(41)}: FAILED! ICommandText::Execute(): Cannot open file d:\1c\l\sc13.dbf. |
|||
19
Ёпрст
13.09.12
✎
15:12
|
||||
20
Ёпрст
13.09.12
✎
15:12
|
+19, либо (17)
|
|||
21
DES
13.09.12
✎
15:15
|
не могу найти 1sqlite.dll
ни скачать |
|||
22
DES
13.09.12
✎
15:20
|
(18) победил
нужно немонопольно заходить |
|||
23
Ёпрст
13.09.12
✎
15:22
|
http://snegopat.ru/downloads/1sqlite/
тока не качай последний, в нём ошибки |
|||
24
Ёпрст
13.09.12
✎
15:22
|
(22) см. (19)
|
|||
25
DES
13.09.12
✎
15:31
|
тот нада 1sqlite_1023.zip ?
|
|||
26
Ёпрст
13.09.12
✎
15:32
|
(25) лучше 1.0.2.4
|
|||
27
Ёпрст
13.09.12
✎
15:33
|
||||
28
DES
13.09.12
✎
15:35
|
THX
|
|||
29
DES
13.09.12
✎
15:48
|
select * from [Справочник.Абоненты] as Ab WHERE Ab.Descr Like 'Иванов*'
Like работает ? |
|||
30
DES
13.09.12
✎
15:50
|
гы, работает
|
|||
31
Ёпрст
13.09.12
✎
16:04
|
тока лучше '%иванов%'
|
|||
32
DES
13.09.12
✎
16:11
|
бАльшое спасибо
|
|||
33
Ёпрст
13.09.12
✎
16:20
|
||||
34
DES
13.09.12
✎
16:25
|
как параметр в sql передать ?
|
|||
35
Ёпрст
13.09.12
✎
16:29
|
(34)
в фоксе УстановиитьТекстовыйПараметр в скульлайте Подставлять, или УстановитьПараметр для параметрического запроса.. + уложить можно списки во временную тз и там и там. |
|||
36
DES
13.09.12
✎
16:36
|
Запрос.УстановитьТекстовыйПараметр("ВыбАдр", Ищем);
{Документ.ПриемНаличныхПлатежей.Форма.Модуль(273)}: Поле агрегатного объекта не обнаружено (УстановитьТекстовыйПараметр) |
|||
37
DES
13.09.12
✎
16:41
|
Запрос.Подставлять("ВыбАдрес", Ищем); // так работает
|
|||
38
Ёпрст
13.09.12
✎
16:44
|
(37) дык разный же синтаксис у объектов..
|
|||
39
Ёпрст
13.09.12
✎
16:45
|
вообще, к скульлайту есть дока в chm, для фокса подкодят почти все методы объекта одбс, часть есть тут
http://www.1cpp.ru/docum/icpp/html/ODBC.html часть тут http://www.1cpp.ru/docum/icpp/html/oledb.html |
|||
40
DES
13.09.12
✎
16:51
|
что можно получить после
Запрос.ВыполнитьЗапрос("SELECT * FROM [Справочник.Абоненты]").ВыбратьСтроку() какие поля и как ? |
|||
41
Ёпрст
13.09.12
✎
16:54
|
(40) ? все поля справочника..
правда, без типизации :) |
|||
42
Ёпрст
13.09.12
✎
16:54
|
вообще, * - как правило для запросов с exists имхо, актуальна
|
|||
43
Ёпрст
13.09.12
✎
16:55
|
ну или для count там, например.
|
|||
44
Ёпрст
13.09.12
✎
16:55
|
всё остальное, нужно ручонками перечислять в селект листе, а в 1с-ине, еще и приводить к нужному типу.
|
|||
45
DES
13.09.12
✎
16:55
|
Запрос.ПолучитьЗначение("Descr") - чето не фурычить
после .Выбратьстроку() |
|||
46
DES
13.09.12
✎
16:56
|
меня интересует выбранная в ТЗ строка
|
|||
47
Ёпрст
13.09.12
✎
16:56
|
(45) :))
ТЗ = Запрос.ВыполнитьЗапрос("SELECT * FROM [Справочник.Абоненты]"); так понятнее ? на выходе - таблица значений.. можно и в список значений и в индексированную тз. |
|||
48
DES
13.09.12
✎
16:57
|
ну так понятно, а так Запрос.ВыполнитьЗапрос("SELECT * FROM [Справочник.Абоненты]").ВыбратьСтроку()
? |
|||
49
DES
13.09.12
✎
16:59
|
что можно из Запрос. выудить ?
я же как бы еще выбрал строку дополнительно. как ее почухать ? |
|||
50
Ёпрст
13.09.12
✎
17:00
|
:)))
да блин, Запрос.ВыполнитьЗапрос возвращает в качестве результата Таблицу значений, дальше делай с ней что хочешь, хочешь - строку выбирай в ней, метод такой есть у ТЗ - ВыбратьСтроку().. :) |
|||
51
DES
13.09.12
✎
17:01
|
я в курсе про ТЗ.
меня интересует что можно получить без явной ТЗ |
|||
52
DES
13.09.12
✎
17:02
|
могу выдрать значение поля выбранной строки ?
|
|||
53
Ёпрст
13.09.12
✎
17:02
|
можешь, так еще
ТЗ = Запрос.ВыполнитьЗапрос("SELECT * FROM [Справочник.Абоненты]"); ТЗ.выбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 Цикл Сообщить(ТЗ.Descr); КонецЦикла |
|||
54
Ёпрст
13.09.12
✎
17:04
|
Я не совсем догоняю, что ты хочешь..
ЗЫ: в фоксе или в запросе к скулю, можно еще через рекордсет обойти записи, последовательно |
|||
55
Ёпрст
13.09.12
✎
17:08
|
+54 используя методы След() Пред() в НачалоВыборки() и т.д.
|
|||
56
DES
13.09.12
✎
17:08
|
да нет, как в ТЗ я знаю.
я хочу понять что я еще могу выдрать из строки Запрос.ВыполнитьЗапрос("SELECT * FROM [Справочник.Абоненты]").ВыбратьСтроку() только из нее. так как я Выбрал в ТЗ строку, то могу ли я ее получить? как получить нужные мне данные я знаю, я спрашиваю только это. |
|||
57
DES
13.09.12
✎
17:09
|
например :)
Запрос.ТекущийЭлемент() или Запрос.CODE или Запрос.ПолучитьЗначение("CODE") |
|||
58
Ёпрст
13.09.12
✎
17:11
|
(56)
ВыбратьСтроку(<?>,,); Синтаксис: ВыбратьСтроку(<Строка>,<Заголовок>,<Таймаут>) Назначение: Открыть окно для интерактивного выбора строки в таблице значений. Возвращает число: 1 - если выбор произведен (нажата кнопка ОК); 0 - если выбор не произведен (нажата кнопка ''ОТМЕНА''); -1 (минус единица) - закончилось время <Таймаут> ожидания отклика пользователя. Параметры: <Строка> - необязательный параметр. Идентификатор переменной, куда помещается значение - номер выбранной строки. При вызове метода здесь можно передавать значение начального номера строки. <Заголовок> - необязательный параметр. Строковое выражение, значение которого отображается в заголовке диалогового окна. Может использоваться для подсказки пользователю. <Таймаут> - необязательный параметр. Числовое выражение, значение которого задает время ожидания системы (в секундах) на отклик пользователя. Если не задано, то время ожидания бесконечно. |
|||
59
DES
13.09.12
✎
17:17
|
т.е.
Запрос.ВыполнитьЗапрос("SELECT * FROM [Справочник.Абоненты]").ВыбратьСтроку(номСтр, "Выбирай",60); номСтр - от какой ТЗ ? |
|||
60
Ёпрст
13.09.12
✎
17:19
|
еще раз, метод ВыполнитьЗапрос возвращает таблицу значений, к ней применимы все методы таблицы значений, ей можно присвоить переменной, которая станет таблицей значений, в этой таблице значений можно выбрать строку.
Что еще рассказать про таблицу значений ? |
|||
61
Mikeware
13.09.12
✎
17:24
|
(60) продай ему СП.
|
|||
62
Ёпрст
13.09.12
✎
17:26
|
(61) блин, ДенисЧ все скупил, теперь вот, перепродаёт, барыга
|
|||
63
DES
13.09.12
✎
17:56
|
(60) Я в курсе что возращает метод.
меня интересует какие еще методы можно применить к Запрос после того как к нему применент метод ВыбратьСтроку(). З.Ы. про работу с ТЗ я в курсе. |
|||
64
Ёпрст
13.09.12
✎
18:07
|
(63) При чем тут запрос ????????????????????????
метод ВыбратьСтроку примёнен к Т-А-Б-Л-И-Ц-Е З-Н-А-Ч-Е-Н-И-Й! |
|||
65
ЧашкаЧая
13.09.12
✎
18:09
|
Во вложении первого поста очень толковый хелп для новичка по прямым запросам. Чтобы въехать самое то.
http://www.1cpp.ru/forum/YaBB.pl?num=1148874473 |
|||
66
ЧашкаЧая
13.09.12
✎
18:12
|
+ (65) А еще лучше, почитать хелп, и использовать клас ПрямойЗапрос http://www.1cpp.ru/forum/YaBB.pl?num=1273512019 - практически полный аналог запросов для снеговика под клюшки, не нужно постоянно переключаться чтобы набрать ключевые слова на английском.
|
|||
67
DES
13.09.12
✎
18:45
|
(64) к какой ТЗ ?
Имя!!?? |
|||
68
Ёпрст
13.09.12
✎
18:55
|
ноу комментс, как говорится.
не я пас с этой ветки |
|||
69
DES
13.09.12
✎
19:06
|
ну и на том спс ;)
|
|||
70
Злопчинский
13.09.12
✎
20:24
|
Ёпрст, не волнуйся! ты нужен родине!
|
|||
71
КонецЦикла
13.09.12
✎
20:33
|
Это, наверное, восьмерочник
Епрст, не волнуйся ТЗ.ВыбратьСтроку() - достаточно, и вопросов меньше будет |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |