![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO + Access
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 гб.