Вверх ↑
Этот топик читают: Гость
Ответов: 139
Рейтинг: 4
#1: 2008-01-29 12:47:41 ЛС | профиль | цитата
Подскажите, пожалуйста, как передать данные из компонента MSSQL, полученные с помощью запроса из базы, в компонент StringTable, что бы затем вывести в Word с помощь компонентов Word 3.
карма: 0

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#2: 2008-01-29 23:42:19 ЛС | профиль | цитата
Ознакомтесь с примерами в папке ..HiAsmElementsDelphiExampleDateBase
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 139
Рейтинг: 4
#3: 2008-01-30 09:43:30 ЛС | профиль | цитата
Там есть пример отображения данных из MSSQL в DataGrid, а мне нужно передать данные из компонента MSSQL в StringTable. Подскажите как это можно сделать.
карма: 0

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#4: 2008-01-30 10:31:00 ЛС | профиль | цитата
Не обязательно использовать компонент MSSQL для доступа к MS SQL Server. Достаточно осуществить доступ через ODBC или, если Вас не устроит скорость, через OLEDB. Пример смотрите там же: ODBC_Access.sha.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Гость
Ответов: 17029
Рейтинг: 0
#5: 2008-01-30 16:19:08 правка | ЛС | профиль | цитата


Редактировалось 3 раз(а), последний 2021-05-21 12:32:28
карма: 0

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#6: 2008-01-31 23:11:08 ЛС | профиль | цитата
Хорошо, но сразу предупреждаю, что претензии на работу компонента не принимаются, так как он морально и физически устарел, делался под довольно раннюю версию HiAsm и имеет массу ограничений по чтению типов данных, таких как datetime и многие другие.

Последнее замечание:

Пример проверен на HiAsm b167, MSSQL Server 2000 SP4 (сегодня на момент публикации поста). Поэтому сообщения типа: "НЕ РАБОТАЕТ" можете даже не постить.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
файлы: 1sqlserver.rar [48.8KB] [335]
Ответов: 139
Рейтинг: 4
#7: 2008-02-01 11:37:05 ЛС | профиль | цитата
У меня этот компанент действительно не работатет, выдает ошибка при компиляции. Я его уже как-то скачивал. Но я уже решил эту задачку методом научного тыка и исходников MSSQL и как раз этого компанента. Теперь работает, но как элемент я его пока не оформил, попытался прикрепить .pas файл в виде архива RAR, но что-то не получается, пишет, что мол недостаточно прав.
карма: 0

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#8: 2008-02-01 23:42:37 ЛС | профиль | цитата
А у меня работает:
db

и это говорит лишь о том, что Вы не смогли повторить те условия при которых данный пример работает.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
файлы: 1mssql.jpg [96KB] [510]
Ответов: 952
Рейтинг: 4
#9: 2010-12-04 20:20:13 ЛС | профиль | цитата
Почему-то не работает следующее:
INSERT INTO baza values("%1", "%2","%3","%4","%5","%6","%7","%8","%9","%10","%11","%12","%13","%14","%15","%16","%17","%18")
где %* это данные с Эдитов на форме добавления записи в БД. MS SQL 2008

Неужели надо перед запросам делать коннект к БД?
Вроде коннект делается при запуске:

Add(OLEdb,7011127,196,84)
{
Point(onError)
link(onConnect,15010175:doCreate,[(238,90)(238,125)(184,125)(184,139)])
link(Driver,2009463:Text,[])
link(onError,6783685:doWork2,[])
}
Add(Button,2401723,147,84)
{
Left=395
Top=70
Width=165
link(onClick,7011127:doOpen,[])
}
Add(Edit,2009463,196,35)
{
Left=5
Top=15
Width=790
Text="DRIVER={LocalServer};SERVER=127.0.0.1;UID=sa;PWD=123;DATABASE=test;"
}
Add(Message,6753516,259,91)
{
}
Add(OLEdb_Query,13534015,196,182)
{
link(onQuery,16321824:doStr,[])
link(onColumns,5673081:doEnum,[(236,195)(236,230)])
link(dbSession,15010175:dbSession,[])
link(Text,10579844:Text,[(209,176)(262,176)])
}
Add(OLEdb_Session,15010175,196,133)
{
Point(onError)
link(onCreate,13534015:doQuery,[(238,139)(238,171)(188,171)(188,188)])
link(dbHandle,7011127:dbHandle,[])
link(onError,6783685:doWork3,[(249,146)])
}
Add(HubEx,6783685,245,91)
{
link(onEvent,6753516:doMessage,[])
}
Add(StringTable,6078793,308,189)
{
Left=10
Top=70
Width=375
Height=225
Point(doAddColumn)
}
Add(MT_Enum,5673081,245,224)
{
link(onItem,6078793:doAddColumn,[])
}
Add(MT_String,16321824,245,182)
{
link(onResult,6078793:doAdd,[(293,188)(293,195)])
}
Add(Edit,10579844,256,137)
{
Left=5
Top=40
Width=790
Text="SELECT * FROM myTable"
}

Форма добавления:

Add(Edit,11531335,364,112)
{
Left=115
Top=10
Width=150
TabOrder=3
Text=""
}
Add(Edit,8053908,371,154)
{
Left=115
Top=30
Width=150
TabOrder=4
Text=""
}
Add(Edit,4909914,378,196)
{
Left=115
Top=50
Width=150
TabOrder=5
Text=""
}
Add(Label,13419684,301,119)
{
Left=30
Top=10
Width=70
Height=17
Font=[MS Sans Serif,8,0,16711680,1]
Caption="Страна"
AutoSize=1
Alignment=1
}
Add(Label,4059475,301,161)
{
Left=30
Top=30
Width=70
Height=17
Font=[MS Sans Serif,8,0,16711680,1]
Caption="Количество"
AutoSize=1
Alignment=1
}
Add(Label,14336432,301,203)
{
Left=30
Top=50
Width=70
Height=17
Font=[MS Sans Serif,8,0,16711680,1]
Caption="Цена"
AutoSize=1
Alignment=1
}
Add(Button,13272033,217,259)
{
Left=120
Top=665
Caption="OK"
Data=Integer(1)
link(onClick,6989287:doEvent1,[])
}
Add(FormatStr,12878242,343,259)
{
DataCount=10
Mask="INSERT INTO testbaza values("%1", "%2","%3","%4","%5","%6","%7","%8","%9","%10","%11","%12","%13","%14","%15","%16","%17","%18")"
Point(FString)
link(onFString,14678189:doEvent,[])
link(Str4,11531335:Text,[])
link(Str5,8053908:Text,[])
link(Str6,4909914:Text,[])
}
Add(Hub,6989287,287,259)
{
link(onEvent1,12878242:doString,[])
}
Add(OLEdb_Query,13534015,560,259)
{
link(dbSession,6036805:Var,[])
link(Text,12878242:FString,[(573,247)(461,247)(461,303)(349,303)])
}
Add(GlobalVar,6036805,560,224)
{
Name="session"
}
Add(Debug,14678189,525,259)
{
link(onEvent,13534015:doQuery,[])
}

карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#10: 2010-12-04 21:18:43 ЛС | профиль | цитата
user_asm писал(а):
Неужели надо перед запросам делать коннект к БД?

надо
карма: 27
0
Ответов: 952
Рейтинг: 4
#11: 2010-12-04 22:49:36 ЛС | профиль | цитата
Т.е. мне перед каждым запросом нужна связка OLEdb и OLEdb_Session?
ну естественно с соответствующими связями

------------ Дoбавленo в 22.49:
Приведите плиз пример запроса на вставку в БД новой записи. Лучше в виде схемы.
Уже перепробовал кучу вариантов а толку 0.

При открытии БД если в БД есть хоть одна внесенная строка со значениями - прога умирает с ошибкой.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#12: 2010-12-05 02:29:47 ЛС | профиль | цитата
user_asm писал(а):
Т.е. мне перед каждым запросом нужна связка OLEdb и OLEdb_Session?

чтобы этого не делать нужно строить схему так:
code_21697.txt

user_asm писал(а):
Приведите плиз пример запроса на вставку в БД новой записи


#sql
INSERT INTO tttt(id) values(23)
карма: 27
0
файлы: 1code_21697.txt [1.4KB] [391]
Ответов: 952
Рейтинг: 4
#13: 2010-12-06 22:35:11 ЛС | профиль | цитата
Dilma,
1. Схема отработала но ничего в таблицу не вывела. Более того, при нажатии на кнопку Push - выбило ошибку Runtime error 216 at 0000AB6D и прога успешно закрылась. Если отсоединить ssid и связать напрямую то схема будет работать при условии что таблица пуста. Т.е. выполнится запрос и в списке строк мы получим наименования всех столбов. При наличии хоть 1 заполненной строки в таблице - Runtime error 216 at 0000AB6D и закрытие проги. Вот схема:


Add(MainForm,11824324,231,91)
{
Width=754
Height=447
link(onCreate,7011127:doOpen,[])
}
Add(OLEdb,7011127,336,105)
{
Point(onError)
link(onConnect,15010175:doCreate,[(378,111)(378,146)(324,146)(324,160)])
link(Driver,2009463:Text,[])
link(onError,6783685:doWork2,[])
}
Add(Button,2401723,259,259)
{
Left=395
Top=70
Width=165
}
Add(Edit,2009463,336,56)
{
Left=5
Top=15
Width=790
Text="DRIVER={SQL Server};SERVER=127.0.0.1;UID=sa;PWD=123;DATABASE=test2;"
}
Add(Message,6753516,399,112)
{
}
Add(OLEdb_Query,13534015,315,259)
{
link(onQuery,16321824:doStr,[])
link(onColumns,5673081:doEnum,[(355,272)(355,307)])
link(dbSession,15010175:dbSession,[(321,223)(342,223)])
link(Text,10579844:Text,[(328,253)(402,253)])
}
Add(OLEdb_Session,15010175,336,154)
{
Point(onError)
link(onCreate,13534015:doQuery,[(380,160)(380,212)(303,212)(303,265)])
link(dbHandle,7011127:dbHandle,[])
link(onError,6783685:doWork3,[(389,167)])
}
Add(HubEx,6783685,385,112)
{
link(onEvent,6753516:doMessage,[])
}
Add(StringTable,6078793,427,266)
{
Left=10
Top=130
Width=585
Height=225
Point(doAddColumn)
}
Add(MT_Enum,5673081,364,301)
{
link(onItem,6078793:doAddColumn,[])
}
Add(MT_String,16321824,364,259)
{
link(onResult,6078793:doAdd,[(412,265)(412,272)])
}
Add(Edit,10579844,396,214)
{
Left=5
Top=40
Width=790
Text="SELECT * FROM mytable"
}
Add(GlobalVar,16541232,399,154)
{
Name="ssid"
}
Add(GlobalVar,29603,315,224)
{
Name="ssid"
}


2. Такой вид запроса я пробовал. Но не срабатывало. Сработало в виде INSERT INTO tttt values('23','24')
Причем именно с символом ' а не ".
3. При вводе в таблицу новых значений из создаваемой проги, опять же имеем ошибку Runtime error но данные в таблицу вводятся.
Вот примерная схема ввода. Примерная потому как порядок связей в принципе можно и поменять:

Add(Button,13272033,49,525)
{
Left=105
Top=130
Caption="OK"
Data=Integer(1)
link(onClick,6989287:doEvent1,[])
}
Add(FormatStr,12878242,175,525)
{
DataCount=3
Mask="INSERT INTO mytable values('%1','%2','%3')"
Point(FString)
link(onFString,13534015:doQuery,[])
}
Add(Hub,6989287,119,525)
{
OutCount=5
link(onEvent2,12878242:doString,[(154,538)(154,531)])
link(onEvent5,7011127:doClose,[(336,559)(336,419)])
}
Add(OLEdb_Query,13534015,392,525)
{
link(dbSession,15010175:dbSession,[(398,506)(545,506)])
link(Text,12878242:FString,[(405,513)(293,513)(293,569)(181,569)])
}
Add(OLEdb,7011127,539,406)
{
Driver="DRIVER={SQL Server};SERVER=127.0.0.1;UID=sa;PWD=123;DATABASE=test2;"
Point(onError)
link(onConnect,15010175:doCreate,[(583,412)(583,436)(527,436)(527,461)])
link(onError,6753516:doMessage,[])
}
Add(OLEdb_Session,15010175,539,455)
{
Point(onError)
link(dbHandle,7011127:dbHandle,[])
}
Add(Message,6753516,609,413)
{
}


3. Собственно так и осталось что выборка в таблицу строк не осуществляется - таблица на форме остается пустой. Значат ли все эти ошибки\косяки что HiAsm не поддерживает работу с MS SQL?

P.S. Касательно системы. Windows 7, MS SQL 2008, HiAsm билд 184. Нужна именно MS SQL так как в ней можно разграничить доступ по правам акаунтов. В SQLite этого сделать невозможно я так понимаю. Т.е. к таблице такой-то доступ всем а к такой-то доступ только админу.
------------ Дoбавленo в 11.17:
Неужели никто с MS SQL не работает?
------------ Дoбавленo в 11.27:
Кстати если компонент от Nic не ставить то его схема компилится. Если установить его компонент и попробовать скомпилить то получим ошибку.
------------ Дoбавленo в 22.35:
Уже и MS SQL откатил с 2008 на 2005 и никакого результата.
карма: 0

0
Главный модератор
Ответов: 2999
Рейтинг: 396
#14: 2010-12-06 23:58:06 ЛС | профиль | цитата
mssql.png

Ваша схема работает на MSSQL2000. Ищите причину у себя на компе: firewall, права доступа на сервер и т.п.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
файлы: 1mssql.png [18KB] [675]
Ответов: 5446
Рейтинг: 323
#15: 2010-12-07 09:07:35 ЛС | профиль | цитата
user_asm, а вы случаем не FPC компилируете?
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)