Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADO + Access


Страницы:   1 2

Dmitry_177 ©   (2008-05-04 12:13:00) 

Как при помощи ADO добавить новую запись в таблицу? Интересен момент с индексом строки.. просмотрев в самом Accesse файл mdb, увидел там что поле "Код", грубо говоря идентификатор строки, ставится последовательно.. Сделав в Delphi следующее:

 var
   MyRecSet: _Recordset;

 MyRecSet.MoveLast;
 MyRecSet.AddNew(0, 0);
 MyRecSet.Fields.Item[1].Value := 'efcwef1';     // строка
 MyRecSet.Fields.Item[2].Value := '20.12.1990';  // дата
 MyRecSet.Update(0, 0);


строка Код не забивается автоматически по порядку.. вот кто как с этим боролся? И еще.. Правильно ли что я переношу курсов в конец функцией MoveLast перед записью? И правильно что в функциях AddNew и Update в их параметрах я задал нули?


Anatoly Podgoretsky   (2008-05-05 12:01:00) [1]

> sniknik  (05.05.2008 11:38:25)  [25]

Так и не надо и так нечитаемое.


Anatoly Podgoretsky   (2008-05-05 12:01:00) [2]

> Dmitry_177  (05.05.2008 11:33:23)  [23]

Так у тебя литерал более 255 символов, а речь идет не о литералах, а о строках.


Anatoly Podgoretsky   (2008-05-05 12:00:00) [3]

> sniknik  (05.05.2008 11:24:22)  [22]

Значит обманула она меня, а знал же, что женщинам верить нельзя.


sniknik   (2008-05-05 11:38:00) [4]

> почему
компилятор на больше не задумывался.


Palladin   (2008-05-05 11:37:00) [5]

бедненький :) строковая константа действительное не может быть больше 255 буковок, но ведь можно написать одну большую строковую как две строковых поменьше и между ними значек плюсика


Dmitry_177   (2008-05-05 11:33:00) [6]

странно тогда почему у меня возникает ошибка:

[Error] Unit1.pas(142): String literals may have at most 255 elements
на строке:
DBCommand.CommandText := 'sql запрос';

а если сделать строку покороче то все нормально..


sniknik   (2008-05-05 11:24:00) [7]

Anatoly Podgoretsky ©   (05.05.08 11:14) [19]
ну так, я про тоже.

поддержка движка базы access (jet) остановилась, а в программе access все переводят на mssql.

кстати проверил, попробовал базу в 2003 формате сделать больше 2х гигабайт... как и ожидал не удалось.
после того как база достигла 1,99 гб. запрос
SELECT * INTO Table8 FROM Table1
стал выдавать "EOleException : Ошибочный аргумент"
хотя с Table2 по Table7 выполнялся... "Выполнено применительно к 1440160 записям. (no recordset)"


Anatoly Podgoretsky   (2008-05-05 11:18:00) [8]


> может они и имели ввиду когда программа на access работает
> с базой mssql?

Вообще то нет, программа чисто на Акцесс и база родная, правда доверия у меня к источнику информации нет. Женщина, случайно оказалась в этом деле, ее муж разрабатывал систему, а после увольнения она продолжила его дело. Но с VBA разбирается. Особых оснований как верить, так и не верить нет. Разговор был между делом. Для меня и не существенно, на текущий момент размер базы всего 12 мб ( сначала года) события пишутся постоянно, из железа. Если что то мне будет не тяжело произвести сжатие или удалить старые записи, тем более что есть функция перемещения в архив с удалением из текущей.


Palladin   (2008-05-05 11:16:00) [9]


> Anatoly Podgoretsky ©   (05.05.08 11:12) [18]

тык я так и сказал, длинна, а не размер :)

тут еще хужее, если все таки строка копируется, то длинна еще силнее ограничена: всего 512мегабуковками... мало то как... ужос... как в таких условиях можно приложения писать...


Anatoly Podgoretsky   (2008-05-05 11:14:00) [10]


> слышал что прекратили развитие/поддержку в пользу mssql.

Вообще то нет, есть другая рекомендация, использовать в качестве базы (хранилища) mssql, а сам Акцесс использовать как FrontEnd - вроде в этом случае даэе поддержка VBA сохраняется. Тоже относится и к ФоксПро


Anatoly Podgoretsky   (2008-05-05 11:12:00) [11]


> я про буковки, а не про память )

Так и надо писать 1 гигабуковка


sniknik   (2008-05-05 10:54:00) [12]

> у которых размер БД свыше 16 гб.
может они и имели ввиду когда программа на access работает с базой mssql? иначе трудно обьяснить... бесплатный двиг, и чтобы ограничений меньше чем у mssql express c 4 гигами... не, не может быть.

они могут еще конечно держать базу (единую логически) в нескольких файлах... но это не то, верно?

> а кстати провайдеру строка разе не by ref передается? помойму by ref... хотя фз...
не уверен. хотя, действительно х.з. и проверять не хочется. (вот параметры копируются, это проверял, пытался передать максимально возможное BLOB поле, памяти "елось" в 2 раза больше)


Palladin   (2008-05-05 10:49:00) [13]


> sniknik ©   (05.05.08 10:41) [11]

а кстати провайдеру строка разе не by ref передается? помойму by ref... хотя фз...


Palladin   (2008-05-05 10:46:00) [14]


> sniknik ©   (05.05.08 10:41) [13]

имеется ввиду, что в

'select * from table'
19 байт в ANSI, но в WideString это дело занимает 38 байт (+накладные расходы на счетчик и тп)...

потому ANSI запрос не может быть больше чем ~(FreeMem div 2)...


sniknik   (2008-05-05 10:43:00) [15]

> А эта информация не устарела?
первый раз слышу...

и наоборот, слышал что прекратили развитие/поддержку в пользу mssql.


sniknik   (2008-05-05 10:41:00) [16]

> я про буковки, а не про память )
???? опять не понятно... ;(


Palladin   (2008-05-05 10:41:00) [17]


> Anatoly Podgoretsky ©   (05.05.08 10:40) [9]

до 4 увеличивали, afaik, но что бы 16... сомневаюсь...


sniknik   (2008-05-05 10:41:00) [18]

>> длиннее гигабайта?
> а не 2х?
понял, половина памяти на запрос в программе половина на копию переданную в провайдера... и память кончилась. действительно получается 1 гигабайт максимум.


Palladin   (2008-05-05 10:40:00) [19]


> sniknik ©   (05.05.08 10:36) [8]
> а не 2х? вайдстринг 2 гигабайта.

я про буковки, а не про память )


Anatoly Podgoretsky   (2008-05-05 10:40:00) [20]


> что кстати является и ограничением на обьем базы аксесса.
> .. действительно, нифига себе у вас запросы. ;)

А эта информация не устарела?
Мне недавно ставили программу на основе Акцесс базы, я спросил производителя, как там с 2 гб, он ответил, что в прошлом, формат Акцесс 2003 уже не имеет такого ограничения, у них есть клиенты, у которых размер БД свыше 16 гб.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо