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

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

Ошибки не выдает ,но и не делает того, что надо [D7, Paradox]


Страницы:   1 2

ViktorZ ©   (2005-10-23 12:13:00) 

Короче есть Форма вот кусок кода, который не выдает ошибки, но и не делает того, что нужно. Ладно бы ошибку выдал,
а то вслепую трудно. Грешу на второй Query.
Вот когда я пишу:
Query1.SQL.Add('UPDATE PCHECK.DB SET PCHECK.DB.Curency = 15 where PCHECK.DB.Cnum =2 ');
то все делается как надо.

Вот собстенно код:

procedure TForm1.Button3Click(Sender: TObject);

begin
Query1.Close;
Query1.SQL.Clear;
//Query1.SQL.Add('SELECT Pcheck.Curency, PcheckNEW.Curency FROM ":STANDARD1:PCHECK" PCHECK, ":STANDARD2:PCHECKNEW" PCHECKNEW');
//Query1.ExecSQL;
Query1.SQL.Add('UPDATE PCHECK.DB SET PCHECK.DB.Curency = STANDARD2.PCHECKNEW.DB.Curency where PCHECK.DB.Cnum = STANDARD2.PCHECKNEW.DB.Cnum');
Query1.ExecSQL;
end;

end.

Версия Делфи:7
ОС ХР SP2

если что нуно нужно то пишите.

Заранее спасибо.


ViktorZ   (2005-10-27 19:52:00) [1]

Все сделал почти. Теперь вроде все работает. Узнал нового и полезного.


ViktorZ   (2005-10-27 17:43:00) [2]

Спасибо всем.


ANB   (2005-10-26 14:21:00) [3]


> ViktorZ   (26.10.05 13:11) [35]

Тогда прежде чем отдавать таблицу, и портить ее четверками, заводи в ней доп поле (ID), заполняй его уникальными значениями, делай копию. Потом порти, после возврата чини. Связывай строки именно по этому полю - ID. Иначе счастья не будет. Впрочем, если записи физически местами не менялись, можно сию процедуру и сейчас проделать. Только придется это делать с двумя таблицами и результат не очень гарантирован. С помощью SQL и в парадоксовской таблице ты это не проделаешь, хотя может АП сможет помочь. Задай новый вопрос.


ViktorZ   (2005-10-26 13:11:00) [4]

Я ж не со зла а от непонимания?  Я не знаю что такое QBE. По поводу создать таблицы заново то: ситуация такая, таблицу берут с объекта, несут мне, я в таблице менаю столбец Куренси на все четверки(я это сделал), потом ее относят обратно и делают там с ней что-то потом опять дают мне и я там где были четверки ставлю те цифры которые были первоначально. Вот вся задача, вижу свою вину в том чо сразу не сказал как есть, наверное это от безысходности. Заранее прошу прощения что так получилось.


msguns   (2005-10-26 11:22:00) [5]

>ViktorZ   (26.10.05 10:51) [32]

Ты проверял наличие повторяющихся "ключей" как советовали в [20] (QBE) ?
Если нет, то проверь. И хватит людям голову морочить "петербургскими тайнами"


sniknik   (2005-10-26 11:16:00) [6]

ViktorZ   (26.10.05 10:51) [32]
не придется, если реализуеш то что сдесь советовали. т.е. досточно восстановить ключь (а еще лучше создать таблици заново с той же структурой и с ключевым полем (восстановление геморнее), и перелить данные, плюс при копировании "отловятся" дубли, при восстановлении может просто сказать "не могу изза дубликатов" и все. дубли у тебя наверняка есть т.к. поле которое ты называл гарантированно автоинкрементным и недублирующимся на самом деле простого целого типа... в общем обманывал ты нас по полной... )

сделаеш все и тогда запрос из msguns ©   (23.10.05 18:01) [7] на твоих таблицах станет рабочим.


ViktorZ   (2005-10-26 10:51:00) [7]

конечно нет, но тут мне похоже придется раз не вдомек.


msguns   (2005-10-26 09:18:00) [8]

>ViktorZ   (25.10.05 20:03) [30]

Ты когда овощи покупаешь, домой по картошине носишь ?


ViktorZ   (2005-10-25 20:03:00) [9]

Sorry, я с базами мало знаком. Начитался тут всего с подряд.Про воостановление ключа я просто не знал. Вообще идеяу меня такая взять два грида для 2ух таблиц. В 1 загрузить одну таблицу и др в другой грид. А потом по циклу перегнать из одного в другой.


sniknik   (2005-10-24 20:20:00) [10]

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


ViktorZ   (2005-10-24 19:39:00) [11]

Конешно учел пароль. Я ж не тупой))) глядите на базы:
www.viksite.narod.ru/PCHECK.DB
www.viksite.narod.ru/PCHECKNEW.DB
Пароль Aeroflot_Plus.


msguns   (2005-10-24 09:20:00) [12]

Блин, уже четверть сотни постов, а воз и ныне там..
Может уж раскроешь Великую Тайну Мальчишов и покажешь таки структуры обеих таблиц, в частности инфу о ключах ?


sniknik   (2005-10-24 09:02:00) [13]

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

В операции должен использоваться обновляемый запрос. (Ошибка 3073)
Попытка запустить, открыть или изменить запрос, который не является обновляемым.

Возможные причины:

■ Попытка запустить запрос, в котором предпринимается попытка обновить необновляемое поле. Например, создан запрос, в котором предпринимается попытка обновить поле на стороне «один» отношения «один-ко-многим».
■ Попытка использовать устаревший метод OpenQueryDef для запроса, находящегося в базе данных, открытой с доступом только для чтения.
База данных может быть доступной только для чтения по одной из следующих причин:

■ База данных была открыта только для чтения с помощью метода OpenDatabase или элемента управления Data Visual Basic.
■ Файл базы данных определен с доступом только для чтения в сетевой операционной системе.
■ Пользователь не имеет привилегий записи в этот файл базы данных в сетевой среде.
Закройте базу данных, снимите ограничение доступа только для чтения и вновь откройте файл с доступом для чтения/записи.

■ Отсутствуют разрешения на внесение изменений в запрос. Для изменения разрешений обратитесь к системному администратору или создателю таблицы или запроса.


кстати ты вроде говорил у тебя таблици запаролены... говорил после того как я показывал как через ADO делается... как думаеш я учел пароль на базу если ты сказал про него позже? сними и попробуй еще раз.


ViktorZ   (2005-10-24 08:36:00) [14]

Пробовал АДО. ПИшет. Должен использоваться обновляемый запрос.


ViktorZ   (2005-10-24 06:11:00) [15]

msguns ©   (23.10.05 20:33) [20]

>ViktorZ   (23.10.05 20:24) [18]
>Правильно то правильно, но не работает

1. Пробовал через подзапрос как в [7] ?
Да пробовал аналогично, ошибки не выдает, но и не ничено не делает. А Мож это поможет. Две табличы полностья совпадают кроме одного поля Curency и они запаролены.


Anatoly Podgoretsky   (2005-10-23 21:33:00) [16]

sniknik ©   (23.10.05 20:59) [22]
То что он обманывает насчет дублей я был уверен.
Только добавь еще оди нфактор - это Парадокс!


sniknik   (2005-10-23 20:59:00) [17]

ViktorZ   (23.10.05 19:55) [13]
> Простите конечно уважаемый sniknik. Но ваш запрос у меня
> вообще не пошел ругаясь на Лефт и джоин. Сорри конечно,
> но у меня парадох, а он что то их не переваривает.


прощаю... ;о))
он правильно не сработал, я же там писал что это "если бы синтаксис был как access"... а кавычки "" BDE шные поставил, в обшем это пример "наугад" (запрос мутант ;) а не рабочий запрос.
и не переваривает "Лефт и джоин" в апдейте не парадокс а движок исполняющий запрос (BDE)
другой движок - Jet это поймет (с исправлениями) хотя там теже парадоксные таблици останутся см. [19]

Anatoly Podgoretsky ©   (23.10.05 20:52) [21]
mnm   (23.10.05 20:12) [17]
> Во второй таблице более одной записи с кодом. Что означает отсутствие уникальности по полю связи.
;о))) вот вам и автоинкремент. ;о)

>  А NUM у тебя гарантировано уникальный в PCHECKNEW ?
ViktorZ   (23.10.05 16:30) [3]
> да гарантированно. Это автоинкремент.

(ну тут конечно не автоинкремент виноват. так думаю ;)


Anatoly Podgoretsky   (2005-10-23 20:52:00) [18]

mnm   (23.10.05 20:12) [17]
Во второй таблице более одной записи с кодом. Что означает отсутствие уникальности по полю связи.


msguns   (2005-10-23 20:33:00) [19]

>ViktorZ   (23.10.05 20:24) [18]
>Правильно то правильно, но не работает

1. Пробовал через подзапрос как в [7] ?

2. Попробуй в DBD дать QBE запрос на аналогичный селект с CheckPlus во всех колонках и посмотри сколько записей вернет.


sniknik   (2005-10-23 20:27:00) [20]

> Мож кто подскажет как мне в массив затолкать из одной таблицы а потом в другую из массива вставить.
ну "дошол до ручки" ;о))

можно так, без массива.
делаеш коннект к ADO, Jet
кидаеш на форму ADOConnection1
в ADOConnection1.ConnectionString пишеш строку
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=Paradox 7.x;Persist Security Info=False
(D:\ это типа твой путь к базе)
в ADOConnection1.LoginPrompt пишеш false

после по кнопке(например) выполняеш слегка модифицированный запрос из [9]
ADOConnection1.Execute('UPDATE PCHECK AS p INNER JOIN PCHECKNEW AS s ON p.Cnum = s.Cnum SET p.[Curency] = s.[Curency]');
должно сработать. ну или более менее понятную ошибку выдать ;о)). для гарантии надо попробовать.


Страницы:   1 2

Наверх

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