C5.5EE
Юзаю связку
Clarion – ODBC – MySql
Система вывода в LIST – описанная Андреем Поповым
http://www.clarionlife.net/content/view/54/29/
Если поля Баз – текстовые, то в лист выводятся без проблем.
Пытаюсь вывести в лист «Разноперые» поля – неудача.
Итак, опишу, что делаю.
В Mysql имеются следующие таблицы:
Sprmat Teams В клаше созданы те же таблицы импортом из MySql, но с !GLO:Owner
Код: Выделить всё
SprMat               FILE,DRIVER('ODBC'),OWNER(glo:owner),NAME('SprMat'),PRE(MAT),BINDABLE,THREAD
PRIMARY                  KEY(MAT:SprMat_ID),PRIMARY
Kod_Key                  KEY(MAT:Kod)
KEY_Kod                  KEY(MAT:Kod),DUP,NAME('Kod')
Name_Key                 KEY(MAT:Name),DUP
NoGr_Key                 KEY(MAT:NoGr,MAT:BS),DUP
Data_Key                 KEY(MAT:Name,MAT:Datavv),DUP
FlagKey                  KEY(MAT:Flag),DUP
Record                   RECORD,PRE()
SprMat_ID                   LONG,NAME('SprMat_ID')
Flag                        BYTE,NAME('Flag')
Kod                         LONG,NAME('Kod')
Name                        STRING(150),NAME('Name')
KodEI                       BYTE,NAME('KodEI')
NoGr                        STRING(6),NAME('NoGr')
BS                          STRING(20)
Deb                         STRING(20),NAME('Deb')
Cena                        REAL,NAME('Cena')
CenaIzm                     REAL,NAME('CenaIzm')
Spec                        BYTE,NAME('Spec')
Poluch                      STRING(20),NAME('Poluch')
Datavv                      DATE,NAME('Datavv')
LoginVV                     STRING(20),NAME('LoginVV')
                         END
                     END                       
Код: Выделить всё
sqlfile              FILE,DRIVER('ODBC'),OWNER(glo:owner),NAME('Teams'),PRE(sqlfile),BINDABLE,THREAD
Record                   RECORD,PRE()
f1                          CSTRING(256),NAME('TeamID')
f2                          CSTRING(256),NAME('TeamID')
f3                          CSTRING(256),NAME('TeamID')
f4                          CSTRING(256),NAME('TeamID')
f5                          CSTRING(256),NAME('TeamID')
f6                          CSTRING(256),NAME('TeamID')
f7                          CSTRING(256),NAME('TeamID')
f8                          CSTRING(256),NAME('TeamID')
f9                          CSTRING(256),NAME('TeamID')
f10                         CSTRING(256),NAME('TeamID')
                         END
                     END                       
Код: Выделить всё
!SprMatQueue   queue  ! Так пробую – не проходит
!Flag          CSTRING(256)
!Kod           CSTRING(256)
!Name          CSTRING(256)
!NoGr          CSTRING(256)
!BS            CSTRING(256)
!Poluch        CSTRING(256)
!Cena          CSTRING(256)
!SprMat_ID     CSTRING(256)
!              end
SprMatQueue   queue  ! Пробую так – тоже не проходит
Flag          like(MAT:Flag)
Kod           like(MAT:Kod)
Name          like(MAT:Name)
NoGr          like(MAT:NoGr)
BS            like(MAT:BS)
Poluch        like(MAT:Poluch)
Cena          like(MAT:Cena)
SprMat_ID     like(MAT:SprMat_ID)
              end
Код: Выделить всё
! Window Structure
Window               WINDOW('Справочник материалов'),AT(,,644,301),FONT('MS Sans Serif',8,,FONT:regular,CHARSET:CYRILLIC),GRAY
                       LIST,AT(4,46,558,231),USE(?SprMatList),VSCROLL,FORMAT('9R|M*I~Flag~@S3@27R|M~Kod~C@N_6@150L|M~Name~C@s150@25L|M~NoGr~C(2)@s6@71L|M~BS~C' &|
   '@s20@80L(1)|M~Poluch~L(2)@s20@40R|M~Cena~L(2)@n10.2@'),FROM(SprMatQueue)
                       BUTTON('Добавить'),AT(577,47,45,14),USE(?InsertButton)
                       BUTTON('Изменить'),AT(577,69,45,14),USE(?ChangeButton)
                       BUTTON('Удалить'),AT(577,90,45,14),USE(?DeleteButton)
                       BUTTON('Просмотр'),AT(578,119,45,14),USE(?ViewtButton)
                       BUTTON('Закрыть'),AT(582,234,45,14),USE(?Close)
                       BUTTON('OK'),AT(197,284,35,14),USE(?OkButton),HIDE,DEFAULT
                     END
! [Priority 7500]
Код: Выделить всё
SendQuery routine
  data
dstr  &idynstr
  code
  free(SprMatQueue)
  dstr &= newdynstr()
  setcursor(cursor:wait)
  open(sqlfile)
 dstr.cat('select Flag, Kod, Name, NoGr, BS, Poluch, Cena, SprMat_ID  from SprMat where Kod=716') ! Выбираю одну лишь запись, для теста
  sqlfile{prop:sql} = dstr.str()
  if error()
    stop(error() & fileerror())
  end
  loop
    next(sqlfile)
    if error() then break.
    SprMatQueue.Flag      = sqlfile.f1
    Message(clip(SprMatQueue.Flag))  ! Проверяю очередь – данные выводятся все правильно
    SprMatQueue.Kod       = sqlfile.f2
    Message(clip(SprMatQueue.Kod)) !ОК
    SprMatQueue.Name      = sqlfile.f3
    Message(clip(SprMatQueue.Name)) !ОК
    SprMatQueue.NoGr      = sqlfile.f4
    Message(clip(SprMatQueue.NoGr)) !ОК
    SprMatQueue.BS        = sqlfile.f5
    Message(clip(SprMatQueue.BS)) !ОК
    SprMatQueue.Poluch    = sqlfile.f6
    Message(clip(SprMatQueue.Poluch)) !ОК
    SprMatQueue.Cena      = sqlfile.f7
    Message(clip(SprMatQueue.Cena)) !ОК
    SprMatQueue.SprMat_ID = sqlfile.f8
    Message(clip(SprMatQueue.SprMat_ID)) !ОК
    add(SprMatQueue)
  end
  select(?SprMatList,1)
  select(?SprMatList)
  setcursor()
  dstr.release()
Жаль, нельзя приаттачить еще один файл, но смысл такой -
В поле Код выводится цена,
В поле Name выводится ID,
В поле Цена выводятся нули и всё.
То бишь, что – то выводится, что – то нет, а то, что выводится, попадает непонятно куда…
Пробовал описывать через виртуальный файл, как svru писал в топике:
http://forum.clarionlife.net/phpbb/view ... f=6&t=2114
Но, увы…
