Вверх ↑
Этот топик читают: Гость
Ответов: 8
Рейтинг: 0
#1: 2023-04-22 13:00:34 ЛС | профиль | цитата
Не работает doExec.

Make(delphi)
ver(4.04 build 185)
Add(MainForm,2953706,56,175)
{
link(onCreate,4595292:doEvent1,[])
}
Add(OLEdb,2142462,242,245)
{
Driver="Driver={Microsoft Paradox Driver (*.db )};\r\nDriverId=538;FIL=Paradox 5.X;\r\nDefaultDir=C:\Hosp;\r\nParadoxNetPath=C:\Hosp;\r\nParadoxNetStyle=4.x;\r\nParadoxUserName=admin;\r\nPageTimeout=600;"
Point(onError)
link(onConnect,14252000:doCreate,[])
link(Driver,5435641:Var,[])
}
Add(OLEdb_Query,11136757,476,273)
{
Text="\r\n\r\n"
link(onQuery,10290878:doAddRow,[])
link(onColumns,10290878:doAddCols,[])
link(Text,1506974:Text,[])
}
Add(OLEdb_Session,14252000,288,245)
{
Point(onError)
link(onCreate,14897651:doEvent1,[])
link(dbHandle,2142462:dbHandle,[(294,233)(271,233)(271,289)(248,289)])
}
Add(DoData,6765452,151,196)
{
link(onEventData,4773895:doReplace,[])
link(Data,13291680:Text,[])
}
Add(Replace,4773895,193,196)
{
SubStr="***"
link(onReplace,5435641:doValue,[])
link(Dest,6602387:Var,[])
}
Add(GlobalVar,6602387,207,168)
{
Name="path"
Data=String()
}
Add(GlobalVar,5435641,242,196)
{
Name="CSDBase"
}
Add(StrList,13291680,151,140)
{
Strings=#33:Provider=Microsoft.Jet.OLEDB.4.0;|16:Data Source=***;|29:Extended Properties=dBASE IV;|24:User ID=Admin;Password=;|0:|
}
Add(Application,12333461,151,49)
{
}
Add(FilePartElm,7879668,151,98)
{
Mode=0
link(onPart,11280931:doValue,[])
link(FileName,12333461:AppFileName,[])
}
Add(GlobalVar,11280931,200,98)
{
Name="path"
Data=String()
}
Add(Hub,4595292,105,189)
{
OutCount=3
link(onEvent1,7879668:doPart,[(135,195)(135,104)])
link(onEvent2,6765452:doData,[])
link(onEvent3,2142462:doOpen,[(135,209)(135,251)])
}
Add(StrList,1506974,483,196)
{
Strings=#63:SELECT * FROM D:\\alter\\111111.DBF where mfo_k not like 851011|0:|
}
Add(MTStrTbl,2217219,575,273)
{
Left=7
Top=47
Width=427
Height=285
Align=5
TabOrder=1
Name="MST"
Layout="lll"
DoubleBuffered=0
Point(doVisible)
Point(doBringToFront)
Point(doFont)
}
Add(MST_DB,10290878,526,273)
{
MSTControl="MST"
Point(doClearAll)
}
Add(Hub,14897651,357,245)
{
link(onEvent1,7069330:doExec,[])
link(onEvent2,11136757:doQuery,[(389,258)(389,279)])
}
Add(OLEdb_Query,7069330,392,238)
{
Text="\r\n\r\n"
link(onError,2230939:doMessage,[(432,258)(432,244)])
link(dbSession,14252000:dbSession,[(398,226)(346,226)(346,289)(294,289)])
link(Text,1509744:Text,[])
}
Add(StrList,1509744,399,161)
{
Strings=#51:ALTER TABLE "D:\\alter\\111111.DBF" ADD Email date;|0:|
}
Add(Message,2230939,441,238)
{
}

карма: 0

0
Ответов: 770
Рейтинг: 167
#2: 2023-04-22 15:47:20 ЛС | профиль | цитата
zol, Из твоей схемы убрал всё лишнее и добавил тестовую базу. Всё прекрасно работает.
https://forum.hiasm.com/getfile/39599
Проверено на
- Windows 10 (x64)
- Hiasm v4.05 build 186 (delphi)

Редактировалось 3 раз(а), последний 2023-04-22 19:44:40
карма: 15

0
Ответов: 770
Рейтинг: 167
#3: 2023-04-22 19:48:08 ЛС | профиль | цитата

карма: 15

0
файлы: 1Test dBASE IV.zip [2.4KB] [234]
Ответов: 8
Рейтинг: 0
#4: 2023-04-22 22:31:50 ЛС | профиль | цитата
Спасибо за INSERT INTO [PHONE] (кстати не знал про использование [] вместо кавычек). SELECT работал всегда. А, вот ALTER TABLE [PHONE] ADD Email date; или ALTER TABLE "PHONE" ADD Email date; к великому сожалению не работает (возникает ошибка -2147467259 ) даже в этой схеме. возможно, я не знаю всех нюансов данной SQL-версии.
карма: 0

0
Ответов: 770
Рейтинг: 167
#5: 2023-04-23 06:33:00 ЛС | профиль | цитата
zol писал(а):
к великому сожалению не работает (возникает ошибка -2147467259 ) даже в этой схеме. возможно, я не знаю всех нюансов данной SQL-версии.

Note The Microsoft Jet database engine does not support the use of ALTER TABLE, or any of the data definition language (DDL) statements, with non-Microsoft Jet databases. Use the DAO Create methods instead.
Так что, только так. (Удалять таблицу, создавать заново, заполнять данными)

Add(MainForm,16194020,56,224)
{
link(onCreate,1084754:doString,[])
}
Add(StrList,1506974,280,196)
{
Strings=#23:SELECT * FROM PHONE.DBF|
}
Add(MTStrTbl,2217219,393,245)
{
Left=7
Top=47
Width=427
Height=285
Align=5
TabOrder=1
Name="MST"
Layout="lll"
DoubleBuffered=0
Point(doVisible)
Point(doBringToFront)
Point(doFont)
}
Add(MST_DB,10290878,337,245)
{
MSTControl="MST"
Point(doClearAll)
}
Add(Dir,5145339,112,189)
{
}
Add(FormatStr,1084754,112,238)
{
DataCount=1
Mask="Provider=Microsoft.Jet.OLEDB.4.0;\r\nData Source=%1;\r\nExtended Properties=dBASE IV;\r\nUser ID=Admin;Password=;\r\n\r\n"
link(onFString,9000139:doOpen,[])
link(Str1,5145339:CurrentDir,[])
}
Add(DS_OLEDB,9000139,161,238)
{
Name="MyDB"
Point(onError)
link(onCreate,531851:doEvent1,[])
}
Add(DSC_Query,15431247,280,245)
{
DSManager="MyDB"
link(onQuery,10290878:doAddRow,[])
link(onColumns,10290878:doAddCols,[])
link(SQL,1506974:Text,[])
}
Add(Hub,531851,210,238)
{
link(onEvent1,2944764:doEnum,[(235,244)(235,153)])
link(onEvent2,15431247:doQuery,[])
}
Add(DSC_Exec,9147106,329,147)
{
DSManager="MyDB"
}
Add(ArrayEnum,2944764,280,147)
{
link(onItem,9147106:doExec,[])
link(Array,10017277:Array,[])
}
Add(StrList,10017277,266,98)
{
Strings=#19:DROP TABLE [PHONE];|184:CREATE TABLE [PHONE] ([LASTNAME] VarChar(50),[NAME] VarChar(50),[PHONE] VarChar(12),[STREET] VarChar(50),[HOUSE] VarChar(4),[APP] VarChar(4),[NOTES] VarChar(100),[Email] VarChar(100));|97:INSERT INTO [PHONE] VALUES ('Potapov','Sergey','55-55-55','Mokhovaya','3','10','No comment',NOW);|91:INSERT INTO [PHONE] VALUES ('Popov','Andrey','56-56-56','Lenina','3','5','No comment',NOW);|96:INSERT INTO [PHONE] VALUES ('Ivanov','Ivan','17-17-17','SSadovaya','4','6','Very good man',NOW);|108:INSERT INTO [PHONE] VALUES ('Kazakov','Sergey','24-19-68','Polezhaeva','101','22','Also very good man',NOW);|0:|
}


Проверено на
- Windows 10 (x64)
- Hiasm v4.05 build 186 (delphi)
карма: 15

1
Голосовали:zol
Ответов: 8
Рейтинг: 0
#6: 2023-04-23 08:30:35 ЛС | профиль | цитата
Большое спасибо за информацию. Подскажи, пожалуйста, где можно прочитать обобщенную информацию по работе с The Microsoft Jet database engine. Есть ли в этом engine возможность прочитать список полей с их размерами?
карма: 0

0
Ответов: 770
Рейтинг: 167
#7: 2023-04-23 18:26:44 ЛС | профиль | цитата
zol писал(а):
Подскажи, пожалуйста, где можно прочитать обобщенную информацию по работе с The Microsoft Jet database engine.

Частично здесь - https://learn.microsoft.com/ru-ru/sql/ado/guide/appendixes/microsoft-ole-db-provider-for-microsoft-jet?view=sql-server-ver16
И здесь - https://www.dbase.com/support/knowledgebase2019/
zol писал(а):
Есть ли в этом engine возможность прочитать список полей с их размерами?

Сделал пример подключения к базе dBASE с помощью компонента ODBC. Также вывел список названий полей и их тип. https://forum.hiasm.com/getfile/39601
карма: 15

0
файлы: 1Test dBASE IV 3.zip [2.5KB] [274]
Ответов: 8
Рейтинг: 0
#8: 2023-04-23 20:28:55 ЛС | профиль | цитата
За ссылки большое спасибо.
Один элемент в схеме у меня отсутствует.
[img]>
[/img]
--- Добавлено в 2023-04-23 20:30:15

Версия Hiasm v4.04 build 185 (delphi)

Редактировалось 1 раз(а), последний 2023-04-23 20:30:15
карма: 0

0
Ответов: 770
Рейтинг: 167
#9: 2023-04-23 20:44:10 ЛС | профиль | цитата
zol писал(а):
Один элемент в схеме у меня отсутствует.

Это стандартный элемент - MultiBlockFind: Множественный цепочный поиск.
Обнови все элементы. Последняя ревизия – 2404
карма: 15

0
Ответов: 8
Рейтинг: 0
#10: 2023-04-23 23:11:33 ЛС | профиль | цитата
Обновил, получил результат. С типом и размером не совсем понял.
>
карма: 0

0
Ответов: 770
Рейтинг: 167
#11: 2023-04-24 06:22:48 ЛС | профиль | цитата
zol писал(а):
С типом и размером не совсем понял.

Это потому, что таблица создана с такими типами полей

CREATE TABLE [PHONE] (
[LASTNAME] VarChar(50),
[NAME] VarChar(50),
[PHONE] VarChar(12),
[STREET] VarChar(50),
[HOUSE] VarChar(4),
[APP] VarChar(4),
[NOTES] VarChar(100),
[EMAIL] VarChar(100)
)
Подключи другую таблицу. Результат будет другой.
типы полей БД.PNG

Посмотрел формат файла dBase
https://en.wikipedia.org/wiki/.dbf
http://www.independent-software.com/dbase-dbf-dbt-file-format.html
https://www.dbase.com/Knowledgebase/INT/db7_file_fmt.htm
Во всех файлах DBF что есть у меня везде Field length = 0
Если ты пришлёшь свою таблицу буду экспериментировать с ней.
карма: 15

0
Ответов: 8
Рейтинг: 0
#12: 2023-04-24 08:31:29 ЛС | профиль | цитата
Спасибо большое. Посмотрю ссылки.Пока решил вопрос в Delphi.

function TForm1.FieldS(NomF : Integer; Beg: Integer):Integer;
Var
f: file of Byte;
bt: Byte;
pos: Integer;
begin
bt := 0;
pos:=Beg+NomF*32;
AssignFile(f, OpenDialog1.FileName);
Reset(f);
try
Seek(f, pos);
Read(f, bt);
finally
CloseFile(f);
end;
Result :=bt;
end;


NomF - номер поля
Beg - смещение для размера.
карма: 0

0
Ответов: 770
Рейтинг: 167
#13: 2023-04-24 15:23:29 ЛС | профиль | цитата
Пример как можно прочитать название полей, их тип и размер напрямую из файла DBF.
Add(MainForm,2953706,28,133)
{
link(onCreate,12483500:doExecute,[])
}
Add(MemoryStream,8725824,413,175)
{
Point(doPosition)
}
Add(FileStream,189724,140,147)
{
Point(doPosition)
link(onLoad,4521693:doEvent1,[])
}
Add(DataToFileEx,772172,560,245)
{
Type=3
DataSize=10
BigEndian=0
Point(Position)
Point(doPosition)
link(onGet,16462917:doValue,[])
link(Stream,6314117:Var2,[])
}
Add(ODialog,12483500,84,147)
{
Filter="dBase|*.dbf"
link(onExecute,189724:doOpen,[])
}
Add(Hub,4521693,189,147)
{
link(onEvent1,476097:doData,[])
link(onEvent2,1356853:doGet,[(214,160)(214,251)])
}
Add(DoData,476097,231,147)
{
Data=Integer(8)
link(onEventData,13559934:doWork3,[(277,153)])
}
Add(DataToFileEx,4017472,658,287)
{
Type=3
Point(Position)
Point(doPosition)
link(onGet,14732784:doMultiReplace,[])
link(Stream,11156953:Var2,[])
}
Add(DataToFileEx,15136235,749,336)
{
BigEndian=0
Point(Position)
Point(doPosition)
link(onGet,14148414:doString,[])
link(Stream,11156953:Var3,[(755,215)])
}
Add(Math,7889300,266,245)
{
OpType=1
Op2=32
ResultType=0
link(onResult,15747468:doFor,[])
}
Add(DataToFileEx,1356853,224,245)
{
DataSize=2
link(onGet,7889300:doOperation,[])
}
Add(StreamCopy,2156903,413,259)
{
Count=32
link(onCopy,611066:doEvent1,[])
link(Dest,6179572:Var2,[])
link(Source,189724:Stream,[(426,236)(146,236)])
}
Add(DoData,10164947,511,259)
{
Data=Integer(0)
link(onEventData,772172:doPosition,[])
}
Add(HubEx,13559934,273,133)
{
Angle=2
link(onEvent,189724:doPosition,[(130,139)(130,167)])
}
Add(For,15747468,315,245)
{
Start=32
Step=32
IncludeEnd=1
InData=0
link(onEvent,14982555:doEvent1,[])
}
Add(Hub,14982555,357,245)
{
OutCount=3
link(onEvent1,13559934:doWork2,[(382,251)(382,139)])
link(onEvent2,8725824:doClear,[(403,258)(403,188)])
link(onEvent3,2156903:doCopy,[])
}
Add(GetDataEx,6179572,413,210)
{
link(Data,8725824:Stream,[])
}
Add(DoData,14921833,609,301)
{
Data=Integer(11)
link(onEventData,4017472:doPosition,[])
}
Add(DoData,6097407,700,350)
{
Data=Integer(16)
link(onEventData,15136235:doPosition,[])
}
Add(StringTable,12465438,854,336)
{
Left=895
Top=425
Align=5
Columns=#10:Field name|10:Field type|12:Field length|
}
Add(FormatStr,14148414,805,336)
{
DataCount=3
Mask="%1;%2;%3"
link(onFString,12465438:doAdd,[])
link(Str1,16462917:Value,[])
link(Str2,11272687:Value,[])
}
Add(Memory,16462917,805,245)
{
}
Add(Memory,11272687,812,287)
{
}
Add(Hub,2384150,665,350)
{
link(onEvent1,6097407:doData,[])
link(onEvent2,15136235:doGet,[(690,363)(690,342)])
}
Add(Hub,611066,469,259)
{
OutCount=3
link(onEvent1,10164947:doData,[])
link(onEvent2,772172:doGet,[(494,272)(494,251)])
link(onEvent3,12847906:doEvent1,[(494,279)(494,307)])
}
Add(Hub,12847906,567,301)
{
OutCount=3
link(onEvent1,14921833:doData,[])
link(onEvent2,4017472:doGet,[(599,314)(599,293)])
link(onEvent3,2384150:doEvent1,[(599,321)(599,356)])
}
Add(GetDataEx,6314117,560,210)
{
Angle=3
link(Data,6179572:Var3,[])
}
Add(GetDataEx,11156953,658,210)
{
Angle=3
link(Data,6314117:Var3,[])
}
Add(MultiReplace,14732784,714,287)
{
ReplaceList="C=Character;\r\nD=Date;\r\nF=Floating point;\r\nL=Logical;\r\nM=Memo;\r\nN=Numeric;\r\n"
link(onResult,11272687:doValue,[])
}


Редактировалось 1 раз(а), последний 2023-04-24 16:00:50
карма: 15

0
Ответов: 8
Рейтинг: 0
#14: 2023-04-24 20:39:15 ЛС | профиль | цитата
Добрый вечерю Снова проблемы, теперь с DataToFileEx. HIASM v4.05 build 186 (delphi) обновляться не хочет
>
подскажи, пожалуйста, что делать?

--- Добавлено в 2023-04-24 21:16:02

По этой ссылке не качает. http://svn.hiasm.com/packs/delphi/icon/

Редактировалось 1 раз(а), последний 2023-04-24 21:16:02
карма: 0

0
Ответов: 300
Рейтинг: 26
#15: 2023-04-25 08:15:00 ЛС | профиль | цитата
zol писал(а):
По этой ссылке не качает

Ставь вот эту сборку https://disk.yandex.ru/d/kwk7Oo1dWVQtfg
карма: 2
1
Голосовали:zol
Сообщение
...
Прикрепленные файлы
(файлы не залиты)