Страница 2 из 2

Добавлено: 30 Январь 2007, 12:00
Andrew Listiev
Вы там ничего не напутали? DNS каким боком с ODBC связан? Может DSN??? :D

Добавлено: 30 Январь 2007, 12:11
Дед Пахом
Да какая разница, буквы-то одни и те же.

Добавлено: 30 Январь 2007, 12:14
Andrew Listiev
В хелпе от 6-ки есть топик - "ODBC DSN-less Connection support". Почитайте его.

Добавлено: 30 Январь 2007, 12:54
Дед Пахом
Вот что значит уже полгода без Clarion, ведь сам же этим DSN-less всё время пользовался...

Добавлено: 30 Январь 2007, 13:04
Andrew Listiev
Да уж, фенечек поприбавилось :)

Добавлено: 30 Январь 2007, 17:53
Yufil
AnDS писал(а):
Дед Пахом писал(а): Судя по одной-единственной приведенной функции - лучше про ADO забыть :cry:
А чем плоха функция? Работает. Взята из примера.
Не понимаю.
Дед Пахом писал(а): прекрасное штатное средство Clarion -

Код: Выделить всё

myfile{prop:sql}='SELECT a,b,c FROM ' & myfile{prop:name} & ' WHERE d=' & x
Это все хорошо для случая, когда есть словарь.
А когда словаря нет?
Тогда опиши в Словаре ровно один файл
Result File,....
Field1 Cstring(1000)
Field2 Cstring(1000)
....
End

ResultView View(Result)
....
End

ResultView{Prop:SQL}='Select .... From Table ....'
А дальше через ResultView вычитывай данные из твоего запроса

Re: Помогите научиться работать с SQL из Клариона

Добавлено: 09 Ноябрь 2012, 13:33
deesoftprog
Давным давно такой способ как то часто использовал на С6

Описываю такой файлик для 50 полей или сколько надо

DUAL FILE,DRIVER('MSSQL','/TURBOSQL=TRUE'),OWNER(GLO:connString),NAME(DUAL_file),PRE(DUA),BINDABLE,THREAD
Record RECORD,PRE()
DUMMY1 CSTRING(512),NAME('"DUMMY"')
DUMMY2 CSTRING(512),NAME('"DUMMY"')
DUMMY3 CSTRING(512),NAME('"DUMMY"')
DUMMY4 CSTRING(512),NAME('"DUMMY"')
DUMMY5 CSTRING(512),NAME('"DUMMY"')
DUMMY6 CSTRING(512),NAME('"DUMMY"')
DUMMY7 CSTRING(512),NAME('"DUMMY"')
DUMMY8 CSTRING(512),NAME('"DUMMY"')
DUMMY9 CSTRING(512),NAME('"DUMMY"')
DUMMY10 CSTRING(512),NAME('"DUMMY"')
DUMMY11 CSTRING(512),NAME('"DUMMY"')
DUMMY12 CSTRING(512),NAME('"DUMMY"')
DUMMY13 CSTRING(512),NAME('"DUMMY"')
DUMMY14 CSTRING(512),NAME('"DUMMY"')
DUMMY15 CSTRING(512),NAME('"DUMMY"')
DUMMY16 CSTRING(512),NAME('"DUMMY"')
DUMMY17 CSTRING(512),NAME('"DUMMY"')
DUMMY18 CSTRING(512),NAME('"DUMMY"')
DUMMY19 CSTRING(512),NAME('"DUMMY"')
DUMMY20 CSTRING(512),NAME('"DUMMY"')
DUMMY21 CSTRING(512),NAME('"DUMMY"')
DUMMY22 CSTRING(512),NAME('"DUMMY"')
DUMMY23 CSTRING(512),NAME('"DUMMY"')
DUMMY24 CSTRING(512),NAME('"DUMMY"')
DUMMY25 CSTRING(512),NAME('"DUMMY"')
DUMMY26 CSTRING(512),NAME('"DUMMY"')
DUMMY27 CSTRING(512),NAME('"DUMMY"')
DUMMY28 CSTRING(512),NAME('"DUMMY"')
DUMMY29 CSTRING(512),NAME('"DUMMY"')
DUMMY30 CSTRING(512),NAME('"DUMMY"')
DUMMY31 CSTRING(512),NAME('"DUMMY"')
DUMMY32 CSTRING(512),NAME('"DUMMY"')
DUMMY33 CSTRING(512),NAME('"DUMMY"')
DUMMY34 CSTRING(512),NAME('"DUMMY"')
DUMMY35 CSTRING(512),NAME('"DUMMY"')
DUMMY36 CSTRING(512),NAME('"DUMMY"')
DUMMY37 CSTRING(512),NAME('"DUMMY"')
DUMMY38 CSTRING(512),NAME('"DUMMY"')
DUMMY39 CSTRING(512),NAME('"DUMMY"')
DUMMY40 CSTRING(512),NAME('"DUMMY"')
DUMMY41 CSTRING(512),NAME('"DUMMY"')
DUMMY42 CSTRING(512),NAME('"DUMMY"')
DUMMY43 CSTRING(512),NAME('"DUMMY"')
DUMMY44 CSTRING(512),NAME('"DUMMY"')
DUMMY45 CSTRING(512),NAME('"DUMMY"')
DUMMY46 CSTRING(512),NAME('"DUMMY"')
DUMMY47 CSTRING(512),NAME('"DUMMY"')
DUMMY48 CSTRING(512),NAME('"DUMMY"')
DUMMY49 CSTRING(512),NAME('"DUMMY"')
DUMMY50 CSTRING(512),NAME('"DUMMY"')
END
END


DUAL_file = 'dbo.DUAL' !таблица
GLO:connString = clip(ConnectStr) !'Сервер,База,Логин,Пароль;Trusted_Connection=Yes'
open(DUAL,10H)

set(DUAL)
dual{prop:sql}= clip(SQLstrBuf) !'Select COMPANY.name, COMPANY.sname from dbo.COMPANY'
next(DUAL)

В полях DUMMY1, DUMMY2 и т.д.
получаю разбитый по полям соверщенно любой запрос,
что Select что Update и процедуры
запускал 200 килобайтные запросы.
На сервере ORACLE не нужно иметь табличку DUAL,
на MS нужно завести, обычно код такой

open(DUAL,10H)
!-------при ошибке (нет объекта) создать фиктивную таблицу----------
if FileErrorCode() = 'S0002'
dual{prop:sql}= 'USE [MYBAZA]; ' &|
'GO ' &|
'SET ANSI_NULLS ON; ' &|
'GO ' &|
'SET QUOTED_IDENTIFIER ON; ' &|
'GO ' &|
'CREATE TABLE [DUAL] ( ' &|
'[DUMMY] char(512) NULL) ' &|
'ON [PRIMARY]; ' &|
'GO ' &|
'insert dual values(''x'');'
next(DUAL)
if ErrorCode() = 90 then message(FileErrorCode()& ' - ' &FileError(),'Ошибка создания DUAL',icon:hand).
end

Если запрос ничего не вернет по причине ошибки кода, сервер конечно ругнется а из данных получаю "Х" или что введешь в эту таблицу (1 строка)

Проверено отлично работает на MSSQL, ORACLE

Re: Помогите научиться работать с SQL из Клариона

Добавлено: 16 Ноябрь 2012, 14:11
Smith
Пользую ФМ3. Можно, как с DSN,так и без него, предварительно настроив строку подключения к ODBC источнику.