Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Проблема при работе с mdb


Автор: seer 25.4.2006, 12:45
Имеется база мдб.
Имеется всего один компонент - настраиваю соединение.
связываю с БД.
пишу такой код:

Код

    AdoQuery1.SQL.Clear;
    AdoQuery1.SQL.Add('SELECT * FROM Users');
    AdoQuery1.ExecSQL;
    Edit1.Text := IntToStr(AdoQuery1.FieldCount);


FieldCount возвращает 0?

Добавлено @ 12:49 
аха.. я понял. Есть список фиелд и туда добавляются все найденные столбцы и коунт кол-во названий столбцов в этом списке.
А как их получить кодом? 

Автор: seer 25.4.2006, 13:02
Также понял smile открыть забыл
    AdoQuery1.Open;
    Edit1.Text := IntToStr(AdoQuery1.FieldCount);
    AdoQuery1.Close;

Добавлено @ 13:06 
Edit1.Text := AdoQuery1.Fields[1].FieldName
Таким образом я получаю нужный столбец. Акак получить строку этого столбца? 

Автор: seer 25.4.2006, 13:38
smile и тут прогресс
Код

Edit1.Text := AdoQuery1.Recordset.Fields[2].UnderlyingValue;


Добавлено @ 13:42 
В данный момент просьба помчь с обновлением и добавлением. 

Автор: ТоляМБА 26.4.2006, 05:17
Цитата(seer @  25.4.2006,  13:38 Найти цитируемый пост)
обновлением
Код

Update

Цитата(seer @  25.4.2006,  13:38 Найти цитируемый пост)
добавлением

Код

Insert into
Поччитай в ФАКе и в статьях по SQL на форуме 

Автор: seer 28.4.2006, 12:23
ПЛЗ ПОМОГИТЕ! smile

1. Пишет: Ошибка запроса! В чем причина? (первое поле опустил - счетчик)

Код

AdoQuery1.SQL.Add('INSERT INTO Users (Number, Имя, Хрень) VALUES ("2", "3", "4")');


2. Возможно ли одним запросом изменить/получить информацию не по названию столбца.. а по его номеру.. Field[1]

Код

    AdoQuery1.SQL.Clear;
    AdoQuery1.SQL.Add('SELECT * FROM Users');
    AdoQuery1.ExecSQL; // на выполнение
    AdoQuery1.Open; // открыть
    AdoQuery1.Last; // в конец
    AdoQuery1.Prior; // назад
    Edit1.Text := AdoQuery1.Recordset.Fields[2].UnderlyingValue;;
    AdoQuery1.Close; // открыть
    AdoQuery1.SQL.Clear;
    AdoQuery1.SQL.Add('INSERT INTO Users (Number, Имя, Хрень) VALUES ("2", "3", "4")');
    AdoQuery1.ExecSQL; // на выполнение


3. Напишите пример запроса с одновременным поиском..
Пример: (привел логику.. корректность не подтверждается)
Код

'Insert into Table1(strAddress, iCountr) Values iCountr = SELECT ID, strCountr From CountreID where strCountr = Russia  strAddress = "Tuta" '


Что-то такое.. Есть таблица 1 в нее добавляем код страны из таблицы Кодов Стран. Страну знаем.

Добавлено @ 12:25 
Да.. еще один маленький вопрос не по теме.. в дельфи как записать кавыфчки в кавычках..

Например Си

Код

"\"Hello word!:)\""
 

Автор: seer 28.4.2006, 19:34
помогите! 

Автор: Vit 28.4.2006, 21:12
1. А текст ошибки ты сейчас усилленно телепатируешь? -  тогда настраиваюсь на телепатический приём, как приму - так сразу отвечу! Скорее всего запрос надо переписать как:

Код

INSERT INTO [Users] ([Number], [Имя], [Хрень]) VALUES ('2', '3', '4')



2. Не понял... сам же говоришь что надо Fields[1] использовать, так в чём же проблема?

3.
Код

 Insert into Table1 (Field1, Field2)
    Select FieldA, FieldB From...



Цитата(seer @  28.4.2006,  03:23 Найти цитируемый пост)
Да.. еще один маленький вопрос не по теме.. в дельфи как записать кавыфчки в кавычках..


Удвоить их

Код

ShowMessage('This char '' is the qoute');

 

Автор: seer 29.4.2006, 07:42
Цитата(Vit @  28.4.2006,  21:12 Найти цитируемый пост)
Insert into Table1 (Field1, Field2)
    Select FieldA, FieldB From...


Но здесь Field1 - не результат запроса Select, аналогично Field2. Там как-то должно быть так (наблюдал такую конструкцию): Field1 =  Select... при условии одиночного результата.   

Автор: seer 29.4.2006, 12:14
Цитата(Vit @  28.4.2006,  21:12 Найти цитируемый пост)
INSERT INTO [Users] ([Number], [Имя], [Хрень]) VALUES ('2', '3', '4')


Это прошло, а вот модифицировать не получилось..
Что бы в одном запросе допустим [Хрень] присваиволось значение к примеру из другой таблицы при определенном условии..

Добавлено @ 12:17 
Цитата(Vit @  28.4.2006,  21:12 Найти цитируемый пост)
2. Не понял... сам же говоришь что надо Fields[1] использовать, так в чём же проблема?

Да, при условии что
Код

AdoQuery1.SQL.Add('SELECT * FROM Users');


Я также могу построить запрос
Код

AdoQuery1.SQL.Add('SELECT Хрень FROM Users');

или
Код

AdoQuery1.SQL.Add('SELECT Имя, Хрень FROM Users');


И мне не нужно знать номер столбца... а если мне не известно имя столбца, а известна колонка.. 

p.s. Знаю надо бы SQL почитать.. но времени в обрез.. не до етого.. всего пару запросов надо сформировать и все.. 

Автор: Vit 29.4.2006, 15:08
Цитата(seer @  28.4.2006,  22:42 Найти цитируемый пост)
Но здесь Field1 - не результат запроса Select, аналогично Field2. Там как-то должно быть так (наблюдал такую конструкцию): Field1 =  Select... при условии одиночного результата.   



Не понял... нужен Update или Insert? Если Insert - то я тебе всё привёл, если Update - то дело плохо, Jet не поддерживает Update из Select. Только через клиента. PS. читай SQL


Цитата(seer @  29.4.2006,  03:14 Найти цитируемый пост)

Это прошло, а вот модифицировать не получилось..
Что бы в одном запросе допустим [Хрень] присваиволось значение к примеру из другой таблицы при определенном условии..


Млин... ну дал е тебе ответ:

Код

INSERT INTO [Users] ([Number], [Имя], [Хрень]) 
Select '2' as [Number], '3' as [Имя], ПолеИзДругойТаблицы
From ДругаяТаблица
Where УсловиеВыбораИзДругойТаблицы


Добавлено @ 15:12 
В запросе по номеру колонки выбирать нельзя, надо знать имя. Если известна колонка, то надо вытащить имя:

Query1.sql.text:='Select * From Table1'
...
ИмяКолонки:=Query1.fields[НомерКолонки].FieldName
...
Query2.sql.text:='Select '+ИмяКолонки+' From Table1...' 

Автор: seer 29.4.2006, 16:13
Цитата(Vit @  29.4.2006,  15:08 Найти цитируемый пост)

INSERT INTO [Users] ([Number], [Имя], [Хрень]) 
Select '2' as [Number], '3' as [Имя], ПолеИзДругойТаблицы
From ДругаяТаблица
Where УсловиеВыбораИзДругойТаблицы


ммм.. Это что?  '2' as или '3' as - это соответствие? поискал про as нашел только слово 'как' smile

И подвопрос к этому вопросу. Если я [Хрень] хочу присвоить уже имеющееся символьное значение. Как я должен сформировать запрос через VALUE (включая сюда подзапрос "Select '2' as..." ): 

Автор: Vit 29.4.2006, 21:52
Цитата(seer @  29.4.2006,  07:13 Найти цитируемый пост)
ммм.. Это что?  '2' as или '3' as - это соответствие? поискал про as нашел только слово 'как' 



Так отправляю к книжкам по SQL, я не собираюсь писать учебник с прописными истиннами. Если у вас нет времени чтоб открыть букварь и посмотреть синтаксис команд Insert, Select и Update, то у меня переписывать этот учебник и подавно нет времени.

 
Цитата(seer @  29.4.2006,  07:13 Найти цитируемый пост)
И подвопрос к этому вопросу. Если я [Хрень] хочу присвоить уже имеющееся символьное значение. Как я должен сформировать запрос через VALUE (включая сюда подзапрос "Select '2' as..." ):  


Открываем любой учебник по SQL и читаем описание формата Insert до полного просветления.
 

Автор: seer 30.4.2006, 00:17
У меня литературы по СКЛ дофигища.. а вот Читать имхо, нужно день убить минимум, для основ.. 
Из-за пару запросов к БД.. в данном случае это не рациональная трата времени...и Тот кто это нормально знает... ему не составит труда расписать одну строку запроса. 

Автор: Vit 30.4.2006, 03:28
А мне убивать час объясняя как работает простейший select или Update - это рациональная трата времени? Я так не считаю... Думаю, что ответы на ваши вопросы вы найдёте прямо на вашем компьютере посмотрев файлик:

"c:\Program Files\Common Files\Microsoft Shared\OFFICE11\1049\JETSQL40.CHM" 

В зависимости от версии оффиса путь к файлу будет немного другим но в целом искать там, там о Select, Update и Insert написано по 2 страницы текста. 

За Вас я Вашу "рациональную" работу делать не буду... Хотя... если Вы настаиваете, - согласен - я беру 50 $/час за консультацию, за эту сумму денег я согласен Вам объяснять всё что пожелаете, сколько угодно времени, могу исходя из той же суммы денег написать за вас любую программу, диплом или курсовик. 

Автор: seer 30.4.2006, 10:02
Во! За ссылку спасиба! А вот за 50$ в час.. я как-нить найду время на чтение. и проведу сам консультацию..;)

Добавлено @ 10:03 
Надо было в самом начале на ссылку кидать.. 

Автор: chup007 14.5.2006, 04:35
Цитата

я беру 50 $/час за консультацию, за эту сумму денег я согласен Вам объяснять всё что пожелаете, сколько угодно времени, могу исходя из той же суммы денег написать за вас любую программу, диплом или курсовик.

так для интереса, как быстро вы сможете сделать диплом? 

Автор: Vit 15.5.2006, 16:22
Понятия не имею... зависит от темы диплома...  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)