|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ocon = CREATEOBJECT('ADODB.Connection') ocon.connectionstring = ; [Provider=SQLOLEDB.1;] + ; [Password=***;Persist Security Info=True;User ID=++++;]+; [Initial Catalog=Roznica;Data Source=SERVERTM;] ocon.OPEN() ors=CREATEOBJECT('ADODB.RecordSet') ors.CursorLocation = 2 ors.DataSource.locktype = 1 ors.LockType = 1 ors.activeconnection = ocon oRS.AddNew Выдаёт ошибку,...т.е. мне надо добавить запись в БД Roznica, в таблицу Price...может кто подскажет, как надо сделать правильно.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2008, 15:51 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ННовичокocon = CREATEOBJECT('ADODB.Connection') ocon.connectionstring = ; [Provider=SQLOLEDB.1;] + ; [Password=***;Persist Security Info=True;User ID=++++;]+; [Initial Catalog=Roznica;Data Source=SERVERTM;] ocon.OPEN() ors=CREATEOBJECT('ADODB.RecordSet') ors.CursorLocation = 2 ors.DataSource.locktype = 1 ors.LockType = 1 ors.activeconnection = ocon oRS.AddNew Выдаёт ошибку,...т.е. мне надо добавить запись в БД Roznica, в таблицу Price...может кто подскажет, как надо сделать правильно.... По идее, надо сделать объект Command, прописать ему текст команды (select или insert), активную коннекцию и отправить на выполнение. Если в Cоmmand был запрос выборки (select), то результат надо поместить в рекордсет. Примерно так (надо проверять): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 07:32 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
Станислав С...кий, А через Recordset разве нельзя вставить запись в таблицу базы, метод AddNew, куда добавляет запись в выбранный курсор или прямо в таблицу базы? Методы Recordset работают только с выборанным из таблицы курсором? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 09:03 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ННовичок, AddNew добавляет записи в RecordSet, чтобы они появились в таблице надо у Recordset'а вызвать функцию Update (для обновления одной записи) или BatchUpdate (для обновления нескольких записей) AddNew может и не добавить записи, а выдать ошибку. Это происходит в том случае, если используется нединамический RecordSet (тип: ForwardOnly или Static). Подробнее см. в справке (MSDN) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 09:31 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
Станислав С...кий, Да нет, меня update не интересует вот код, работает без ошибок ocon = CREATEOBJECT('ADODB.Connection') ocon.connectionstring = ; [Provider=SQLOLEDB.1;] + ; [Password=*******;Persist Security Info=True;User ID=********;]+; [Initial Catalog=Roznica;Data Source=SERVERTM;] ocon.OPEN() ors=CREATEOBJECT('ADODB.RecordSet') ors.activeconnection = ocon ors.Open("nomzen",ocon,2, 3, 0) *ors.CursorLocation = 3 *ors.DataSource.locktype = 3 *ors.LockType = 3 ocon.BeginTrans () oRS.AddNew ocon.CommitTrans() но когда захожу enterprise в MSSQL, то в таблице nomzen записи нет, конечно можно через объект command вставить insertом запись, но хотелось бы попробовать более правильно через RecordSet ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 09:47 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
Интересно, ради чего столько траха? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 09:53 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
проходящий., не всегда понимаешь ради чего..:-)), опробовав три метода ThruPath, ODBS и ADO, более удобным показалось работать с объектами ADO(как и всё по аналогии Microsoftовское, с Excel, и т.д...:-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 09:59 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ННовичокпроходящий., не всегда понимаешь ради чего..:-)), опробовав три метода ThruPath, ODBS и ADO, более удобным показалось работать с объектами ADO(как и всё по аналогии Microsoftовское, с Excel, и т.д...:-))) С ADO удобнее, чем с ODBC? ThruPath - это SQL Pass-Through? Если да, то это совсем из другой оперы. Есть подозрения в плохом понимании предмета. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 10:06 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
Вы совершенно правы, я плохо разбираюсь в предмете, поэтому и задаю глупые вопросы..:-), но задачи я сдаю в срок(ну не настолько гениальные и изящные), но они работают и пока возникают пожелания только расширения функционала...:-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 10:15 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ННовичокВы совершенно правы, я плохо разбираюсь в предмете, поэтому и задаю глупые вопросы..:-), но задачи я сдаю в срок(ну не настолько гениальные и изящные), но они работают и пока возникают пожелания только расширения функционала...:-)) И каким боком к обсуждаемому вопросу относятся сроки написания программ и их работоспособность? Или просто нет никакого желания разобраться таки в предмете и научиться писать более изящные программы еще быстрее? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 10:21 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ННовичокСтанислав С...кий, Да нет, меня update не интересует А вот это зря! Update/BatchUpdate отсылает измененные данные одной/нескольких записей на сервер!!! Потому Вы ваши данные и не видите :-) Прочитайте-таки инструкцию ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 10:22 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
проходящий., Я всё равно не буду с Вами пикироваться, у вас много ценных советов... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 10:52 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
Станислав С...кий, Да, после update, запись появилась в таблице, спасибо...., правда вот эти параметры 2,3,0 подобрал перебором...а MSDN он на английском.. ors.Open("nomzen",ocon,2, 3, 0) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 10:56 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ННовичокпроходящий., Я всё равно не буду с Вами пикироваться, у вас много ценных советов... А может я как раз во время пикировки еще что-нить ценное выдам? :) Ценные советы стали лишними? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 11:05 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ННовичокопробовав три метода ThruPath, ODBS и ADO, более удобным показалось работать с объектами ADO(как и всё по аналогии Microsoftовское, с Excel, и т.д...:-))) Думаю, правильнее сказать не "более удобные", а "более привычные". Только следует иметь в виду, что для FoxPro работа через ADO - "не естесственная". В том смысле, что в FoxPro не предусмотрено никаких встроенных обработчиков для работы с ADO. Придется все и везде прописывать "руками". Очень много ручной работы. С другой стороны, ODBC интегрировано в среду FoxPro. Т.е. много чего автоматизировано. Будет меньше ручной работы. Впрочем, в VFP8 появился объект CursorAdapter, который позволяет "обернуть", в том числе, и работу по ADO. "Обернуть" в смыле скрыть всю необходимую ручную работу. Пример от Алексея Цингауза (один из разроботчиков FoxPro) по работе с ADO через CursorAdapter. Вам надо только подставить свои значения для полей таблицы и реквизитов подключения. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59.
Смысл в том, что формируется некий курсор, с которым вы работаете в среде FoxPro как с обычной таблицей. Можете добавлять/удалять/изменять записи. И все эти модификации автоматически будут переносится в исходные таблицы. При работе через ODBC код будет почти такой же. Ну, разве что, не надо создавать объект RecordSet. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 11:35 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
Спасибо, но тут есть ряд вопросов, конечно это пример...но всё же oRS.CursorLocation = 3 && adUseClient Зачем курсор надо создавать на клиенте, тогда пойдёт цепочка настроек Fetcheй и т.д., пусть создаётся на сервере, а в CursorFill(.T., .F., 0, oRs), прописать источником RecordSet, ведь если открыт объект RecordSet, то и пользоваться надо всеми его функциями (по аналогии с Excel, это выглядело бы так, открываем методом Excel, добавляем запись методом Foxом, и смотрим через методы Excel, что там получилось)...я не совсем знаток всех этих дел, но пришёл к мнению, что курсор Ад. использовать для просмотра записей в гриде(с помощью связи CursorFill(.T., .F., 0, oRs)), добавление, удаление обновление делается в отдельном окне(отдельной кнопке(Addnew)), где уже раз открыт ADO, то и пользоваться его методами.... Но скорей всего я просто не нашёл как добавить запись в эту чёртову базу в SQL, курсорадапт., так как грид у меня получался из трёх таблиц(а в примере всегода указана одна таблица)...но нашёл примеры в ADO, и по наименьшему сопротивлению...:-))) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 12:53 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ННовичокСпасибо, но тут есть ряд вопросов, конечно это пример...но всё же oRS.CursorLocation = 3 && adUseClient Зачем курсор надо создавать на клиенте, тогда пойдёт цепочка настроек Fetcheй и т.д., пусть создаётся на сервере Серверный курсор = большое тормозилово на сервере. Оно надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 12:57 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
проходящий., не очевидно и голословно... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 13:08 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ННовичокпроходящий., не очевидно и голословно... Э-э-э, как говорили классики марксизма-ленинизма, практика критерий истины, попробуйте и напишите о своих результатах ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 13:10 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ННовичокпроходящий., не очевидно и голословно... Неочевидно тем, кто плохо знает серверную кухню. Зантоки серверной кухни использую серверные курсоры толлько в случае крайней необходимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 13:17 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
ННовичокСпасибо, но тут есть ряд вопросов, конечно это пример...но всё же Вы опять "ищете там где светло, а не там, где потеряли". Я же вам уже говорил, что технология ADO для FoxPro "не родная". FoxPro рассматривает данные как реляционные таблицы, а ADO - как набор взаимосвязанных объектов. Для работы FoxPro, вам так или иначе, но придется сформировать из набора объектов ADO - некую таблицу. "Курсор" в терминологии ADO - это далеко не то же самое, что "курсор" в терминологии FoxPro. Для FoxPro "курсор" - это обычная таблица DBF, которая хранится не на диске, а в памяти. Для ADO "курсор" - это некий специфический набор объектов. Другими словами, FoxPro должен "выковырить" из RecordSet все данные и сформировать на их основе таблицу. Соответственно, чтобы передать модификации из FoxPro обратно, необходимо будет "разложить" таблицу на "составляющие" объекты для RecordSet. А это значит, что вы в любом случае должны будете закачать ВСЕ данные RecordSet на клиента. Где при этом будет находится курсор-ADO, думаю, особой роли не играет. Но это при ЧТЕНИИ данных. А что при записи? А это зависит от используемой вами идеологии построения работы. Если вы отдаете процесс записи на откуп FoxPro (не перекрываете у CursorAdapter настройки InsertCmd, UpdateCmd, DeleteCmd), то логично и курсор-ADO создавать на клиенте. А вот если процесс записи - это некая процедура, запускаемая именно на сервере, то логично и курсор-ADO создавать на сервере, поскольку на клиенте он вообще никак не модифицируется. Однако все эти соображения требуют проверки. Это мои предположения, исходя из примеров, приводимых Алексеем Цингаузом вот здесь http://forum.foxclub.ru/read.php?29,184077,191045 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 14:33 |
|
Как добавить запись в ADO
|
|||
---|---|---|---|
#18+
Я и не говорю, что я хорошо знаю "серверную кухню", поэтому я с этими ответами пойду на другие форумы и там отвечу, вашими словами...ну и выберу, что наиболее убедительно...Но ещё раз повторюсь, MSSQL, это микрософтовская штучка...и если есть навык работы писать oexcel.cell(1,1).value<>1, то почему бы по аналогии не написать rs.Fields("Article").value <> 1 Правда насчёт курсоров я засомневался(нет опыта, навыка, поэтому и сомнения)....ну цифру с "2" на "3" (в CursorLocation) можно сменить, важно выбрать идеологию в курсорадаптере (ADO или ODBC)...а после ответа Максима, я что-то стал сомневаться...наверное надо попробовать вариант на ODBC... Кстати если продолжать аналогию с Excel(MSSQL), то тоже заполнение таблицы Fox(a), можно проводить и с помощью объектов Exel (replace field1 with oExcel.cell(1,1)), и с помощью команд (import from...append from)... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2008, 06:33 |
|
|
start [/forum/topic.php?fid=41&msg=35675954&tid=1587030]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 339ms |
total: | 494ms |
0 / 0 |