Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];

Вниз

Куда пропадает значение счетчика?   Найти похожие ветки 

 
allrussia ©   (2006-12-24 11:58) [0]

Создаю таблицу

"CREATE TABLE TableName (ID COUNTER PRIMARY KEY, COL_MAN TEXT (255))"

вставляю записи


  for i:=0 to 10 do
  begin
    Table1.Insert;
    Table1.FieldByName("COL_MAN").AsString:= s [i];
    Table1.Post;
  end;


все, далее жму кнопку:

Table1.recordno:=5;
Showmessage(Table1.FieldByName("COL_MAN").AsString)

- работает

жму другую кнопку

Table1.recordno:=5;
Showmessage(Table1.FieldByName("ID").AsString)

- НЕ работает!!!???
Все время показывает 0 (должно быть показание счетчика, в данном примере 5).

Самое интересное, если таблицу закрыть, и открыть заново, все фурычит.

Но самое смешное, то что я торможу цикл добавления записей показом сообщения допустим где-то в середине


  for i:=0 to 10 do
  begin
    if i = 5 then ShowMessage ("");
    Table1.Insert;
    Table1.FieldByName("COL_MAN").AsString:= s [i];
    Table1.Post;
  end;


...копирую в этот момент файл базы в другое место, открываю ее в Access и вижу, что все записи колонки ID имеют свои номера, какими они и должны быть. Баг или brain.sys?


 
tesseract ©   (2006-12-24 12:37) [1]

после цикла вызови refresh или UpdateRecord.


 
allrussia ©   (2006-12-24 12:53) [2]

tesseract

Table1.Refresh - ошибка Key value for this row was changed or deleted at the data store.

Table1.UpdateRecord - ошибка Dataset is not in Edit or InsertMode;

пробовал
Table1.edit;
Table1.UpdateRecord; - результат  - 0

и в цикл вставлял - 0

и refresh в цикл вставлял try Table1.Refresh except end; - вообще все записи пустыми становятся

после цикла


забыл сказать, мне во время цикла желательно (нужно) получать значение поля id


 
sniknik ©   (2006-12-24 13:29) [3]

авто инкрементное значение должно обновляться само после добавления записи... (это значение по умолчанию Properties["Update Resync"].Value = adResyncAutoIncrement) при этом значении после Post (insert)  делается SELECT @@Identity.

если этого не происходит... ну возможно несколько вариантов
1 поле (тип) в запросе не определилось как автоинкремент.
2 "сбито"/установлено значение "Update Resync" на adResyncNone например
3 Post не вызывает записи(insert) в таблицу, изза установки режима отложенных изменений.
4 чтото еще. (т.к. используется Table а не нормальные для ADO компоненты (а возможно и коннект не использован, что часто у тех кто пользует Table), то это может быть что угодно, и с чем разбираться ну совершенно неохота)


 
allrussia ©   (2006-12-24 13:45) [4]

sniknik

Table1.Properties["Update Resync"].Value:="adResyncAutoIncrement" ?
ошибка - Applcation uses a value of the wrong type for the current operation...

1 поле (тип) в запросе не определилось как автоинкремент.
как это проверить?

2 "сбито"/установлено значение "Update Resync" на adResyncNone например
как проверить, исправить

3 Post не вызывает записи(insert) в таблицу, изза установки режима отложенных изменений.
аналогично 1, 2

4 чтото еще. (т.к. используется Table а не нормальные для ADO компоненты

Не подскажете название нормальных компонент плз. А здесь используется TADOTable.

пока проблема в силе


 
Anatoly Podgoretsky ©   (2006-12-24 13:56) [5]

> allrussia  (24.12.2006 13:45:04)  [4]

TAdoDataset


 
allrussia ©   (2006-12-24 14:01) [6]

TAdoDataset

а все компоненты из закладки ADO и используются+ ADOXCatalog из Activex


 
sniknik ©   (2006-12-24 14:02) [7]

> ошибка - Applcation uses a value of the wrong type for the current operation...
и где ты увидел у меня строку? все что я говорю, понимай буквально плз. иначе и разговаривать не зачем. (не, я могу конечно и ошибиться... но это случается гораздо реже чем вы извращаете мои слова)
и где у меня сказано что нужно чтото присваивать? это значение по умолчанию. т.е. уже стоит если не менял не сбил.

> Не подскажете название нормальных компонент плз.
TADOTable, TADOQuery, TADOstoredProc вот это "ненормальные", избавься от них, снятием с палитры, чтоб глаза не мозолили, оставшееся используй.


 
sniknik ©   (2006-12-24 14:04) [8]

> а все компоненты из закладки ADO и используются+ ADOXCatalog из Activex
все не надо, надо только нужное.


 
allrussia ©   (2006-12-24 14:21) [9]

sniknik

иначе и разговаривать не зачем.
новичковская же конференция :(
не хотите отвечать - не стоит ругаться

избавься от них, снятием с палитры, чтоб глаза не мозолили, оставшееся используй.

ок избавился,

оставил ADOConnection, ADOXCayalog, ADOCommand
что теперь использовать вместо TADOTable

кстати

вы писали 3 Post не вызывает записи(insert) в таблицу, изза установки режима отложенных изменений.

но тем не менее засиси поля COL_MAN доступны сразу же после .Post


 
sniknik ©   (2006-12-24 14:42) [10]

> не хотите отвечать - не стоит ругаться
это не ругань это факт. при совете "возьми А", ответ "ок,я взял Б, что дальше?/сделал Б", ??? дальнейшее бессмысленно т.к. предполагается "тебе сказали взять А", "а какая разница?/ну а я взял Б не подскажете то что я хочу для него/...", в итоге флейм, и что угодно только не то что нужно.

> что теперь использовать вместо TADOTable
уже сказали, нового добавить нечего. (кстати похоже. см. абзац выше)

> вы писали 3 Post не вызывает записи(insert) в таблицу, изза установки режима отложенных изменений.
> но тем не менее засиси поля COL_MAN доступны сразу же после .Post
записи COL_MAN вносятся на клиенте в клиентский же рекордсет, чего бы им быть недоступными? а автоинкремент получается только с сервера. (+ возможно всякие расчетные/дефаултные на сервере поля, либо присоединенные из других таблиц. но для этого уже используется другое значение для "Update Resync")


 
allrussia ©   (2006-12-24 14:53) [11]

sniknik

а автоинкремент получается только с сервера.
огромный сенькс за наводку!!
ADOTable1.CursorLocation присвоил clUseServer - и все заработало как надо.

если это ничем не грозит (?) то проблема решена!


 
Anatoly Podgoretsky ©   (2006-12-24 15:18) [12]

> allrussia  (24.12.2006 14:21:09)  [9]

Зачем же ты убрал TAdoDataset?


 
sniknik ©   (2006-12-24 15:21) [13]

clUseServer это просто отличный от клиентского режим работы, автоинкремент должен получаться в обоих.  

> если это ничем не грозит (?)
грозит, еще как грозит, т.к. ADOTable1. ну и судя по всему дальнейший разговор смысла не имеет.


 
Anatoly Podgoretsky ©   (2006-12-24 15:24) [14]

> allrussia  (24.12.2006 14:53:11)  [11]

Убери ТADOTable или разговаривать не о чем, не хочешь твое дело, но не жалуйся ни на что, ты сам выбрал свой путь.


 
Anatoly Podgoretsky ©   (2006-12-24 15:27) [15]


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

Не из-за AdoTable, а из-за знаний 0, а упорства мax и слушать других не хочет.


 
allrussia ©   (2006-12-24 16:11) [16]

вы оба поспешные выводы делаете: мне то как раз все равно что использовать, главное чтобы работало

еще в [9] убрал ADOTable и как понял надо вместо него использовать ADODataSet
тогда проект не работает, например у ADODataSet нет свойства TableName
и все - гаплык :(
Естесственно я еще попробую разобраться, ведь с выводами спешить не стоит


 
sniknik ©   (2006-12-24 17:22) [17]

> вы оба поспешные выводы делаете:
выводы делаются по показанному, а не по тому, что у тебя там на самом деле, никто у тебя за спиной не стоит и этого не видит.

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

> например у ADODataSet нет свойства TableName и все - гаплык :(
и это правильно, т.к. его (имени таблицы, да и самой таблици) на самом деле на клиенте нет, а ADOTable тебя обманывает (не только в этом) в чем и причина нежелательности его использования (его и остальных упомянутых), там "подгон" под другую логику.
(вот ты бы стал учится ездить на машине если бы на ней скорость показывалась по таблице соответствий типа если 10км/ч. то это на самом деле значит 100, а если 15 то это значит стоим и тд., а переключение передач зависело от дней недели, в понедельник переключение на первую означает вторую, во вторник заднюю, и т.д. утрированно конечно, но...  ну, а объяснять как ездить на будеш после? когда уже разобрался во всех этих извращениях и понял, что единственное достойное место этой машины на свалке, а никак не на трассе. и что как думаешь имеет тут смысл объяснять, как ездить или как извратиться чтобы вот именно оно "завелось"?)

> Естесственно я еще попробую разобраться, ведь с выводами спешить не стоит
никто не спешит, тебе не один раз "давали шанс"/объясняли правильную позицию, просто с какогото момента перестанут... (после окончательного вывода) если так и будеш на "неправильных" компонентах свои проблемы показывать... (зачем повторяться, сказали же, и не раз, что смена компонента/логики большинство их(проблем) решит, не поменял сам виноват. количество повторов ограничено.)


 
allrussia ©   (2006-12-28 00:29) [18]

sniknik, Anatoly Podgoretsky

не помогло, увы, те же грабли с ADODataSet
если курсор ставишь на clUseServer то все ОК
Table1.Properties["Update Resync"].Value:=adResyncAutoIncrement
тоже не момогает

вроде бы здесь и остановиться и использовать clUseServer
но возник такой интересный момент, когда clUseServer метод locate работает очень медленно (в 5-10 раз медленнее clUseClient), зато очень быстро добавляются записи (раз в пять быстрее)

пока остановился на clUseClient а проблему решил созданием спецзаписи, из которой при добавлении новой записи берется инкремент



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.057 c
1-1164281315
Anatoly Podgoretsky
2006-11-23 14:28
2007.01.21
Теоритический вопрос про потоки и контекст


2-1167426717
Adios
2006-12-30 00:11
2007.01.21
Не компилируются проекты!!!


11-1141296531
Godness
2006-03-02 13:48
2007.01.21
Увеличить размер язычка вкладки


3-1162193140
zero-g
2006-10-30 10:25
2007.01.21
Работа с ADO


3-1162447536
firebird
2006-11-02 09:05
2007.01.21
Как создать конструктор отчетов?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский