• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Помогите по БД в Дельфи!

  • Автор темы Assel
  • Дата начала
A

Assel

Я создала в Дельфи 2 таблицы DBGrid, точнее связала с таблицами что в Аксесе были. Теперь мне из этих двух таблиц нужно выбрать некоторые поля и создать другую новую таблицу. Через MasterFields запретили делать (преодаватель), сказали что нужно это сделать программным путем, т.е. в коде, а как это делать? объясните! и еще мне сказали чо нужно использовать в инспекторе объектов Column для того чтобы я смогла выбирать некоторые поля!
 
T

Titan

Третью таблицу именно создать нужно или в нее( уже существующую) забросить данные выбранные из первых двух. В таблицах много колонок ? структурку набросайте...
 
A

Assel

Нет, у меня уже имеются готовые 2 таблицы. Теперь на основе этих двух нужно создать другую таблицу пограммным путем. Т.е. связать те 2 таблицы каким-то образом и вписать в 3 таблицу.
 
T

Titan

1 .так напишите структуру таблиц и то какие поля их них надо записать в третью ?!
2. что DBGrid отображает ?
 
V

Vadik(R)

Видно, Assel сам не понимает сути задачи и просто уперто говорит то, что сказал ему препод. Только без подробностей.
 
A

Assel

2 таблицы: в 1-ой куча полей мне только некоторые из них нужно взять,
а во 2-ой вего-то 2 поля, нужно выбрать из него лишь одно.

DBGrid отображает то, что в в аксесе у меня, т.е. эти две таблицы, у меня 2 DBGrid-а
 
A

Assel

Да, я не понимаю многих вещей в этом Дельфи. И Я - ОНА! =)
 
T

Titan

Да, я не понимаю многих вещей в этом Дельфи. И Я - ОНА! =)
:lol:

2 таблицы: в 1-ой куча полей мне только некоторые из них нужно взять,
а во 2-ой вего-то 2 поля, нужно выбрать из него лишь одно.
Так как Вам нужно выбрать данные из двух для третьей, то очевидно, что эти две таблицы связаны ( по полю или полям, которые уникально сопоставляют записи в обеих таблицах.
Например: Таблица 1: id_person , Name
Таблица 2: id_person , Fam

SELECT tbl1.Name, tbl2.Fam
FROM Таблица1 tbl1, Таблица2 tbl2
WHERE tbl1.id_person = tbl2.id_person

В итоге имеем связанные данные из двух таблиц для третьей таблицы.

Задачу вы довольно не конретно излагаете. Но исходя из Вашей формулировки у Вас будет форма из двух гридов и двух кнопок (одна из которых Close ;-) ) . По нажатию на кнопку будет формироваться 3-я таблица, при этом все операции будут проводиться в SQL.

Однако если есть уточняющие условия в задаче, то это может быть совсем другое...
 
A

Assel

Спасибо! Так, терь я соеденила таблицы и создала 3 табличку. Это я сделала с помощью ADOQuery ->SQL. Теперь мне нужно из этой созданной таблицы выбрать одно поле и пихать ее данные поочереди в ComboBox, точнее чтобы из ComboBox-а выходили данные одного поля той 3 таблички. Как это осуществить? Ведь 3 таблица она созданная, через Query таким же способом можно?
 
T

Titan

можно опять воспользоваться компонентом Query (либо создать программно либо тем, который есть у Вас на форме).
Вот пример для Query, который уже есть у вас на форме и ComboBox.
данные из поля name из таблицы Table1 заносятся в ComboBox.
Ловите:
Код:
var
sDBItem:string;
begin
ComboBox1.Items.Clear;
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add ('Select name from Table1');
Open;
First;
while not eof do
begin
sDBItem := String(FieldValues ['name']);
ComboBox1.Items.Add(sDBItem);

Next;
end;
end;
end;
 
A

Assel

Дельфи думает что это - ADOQuery1, SQL неизвестные переменные и выявляет ошибку!
 
T

Titan

Дельфи думает что это - ADOQuery1
Конечно. В Вашем случае надо брать компонент Query с закладки ADO - это будет ADOQuery , в некоторых других случаях с закладки BDE - это будет Query. Но из кода понятно, что используется именно ADOQuery.

SQL неизвестные переменные и выявляет ошибку!
Ошибку ? Да вы что. Никакой ошибку и в помине быть не может. Это элементарный запрос.

Даже интересно, а что за ошибка ?
 
A

Assel

Я сама, оказывается виновата, исправила :)
А по тому коду что вы показали - это я на что должна кликать, т.е. чт за процедура будет. На комобокс кликать или на форму? =))
 
T

Titan

А по тому коду что вы показали - это я на что должна кликать, т.е. чт за процедура будет. На комобокс кликать или на форму? =))

Это код заполнения комбобокса данными.
Я не знаю когда именно Вам нужно заполнять комбобокс данными.
Если все операции выполнятются на этапе создания формы , то в OnCreate формы, если Вы хотите заполнять комбобокс по нажатию на какую-нибудь кнопку на форме - то в обработчик OnClick кнопки и т.д. В общем вариантов как видите масса :)
 
M

Mazhor

Не хочу плодить темы поэтому задаю вопрос свой тут! Стандартная композиция ADO ACCESS DELPHI.
Проблема такая, как сделать чтобы в DBGrid можно было вводить десятичные знаки? (например 5.6), в access тип данных поля числовое, следовательно маску ввода задать нельзя, в самой access десятичные знаки вводятся а в DBgrid не дает ставить не точку не запятую!
Знаю тупой вопрос но не могу никак догнать, везде прогуглил нигде не нашол ответа!
 
T

Titan

Mazhor
В станзартном раскладе не заметил никакой проблемы.
Набросал простейшее приложение:
1. ADOConnection -> ADOTable -> DataSource -> DBGrid
2. Таблица в Access : добавляем поле с типом данных 'Числовой' и выставляем в свойствах поля 'Размер поля:Одинарное с
плавающей точкой' и 'Число десятичных знаков'.
Сохраняем.
3. Запускаем Вудзрш приложение.

числа с запятой сохраняются без проблем. :)
 
M

Mazhor

тфу1 ты, точно :), блин а чо тогда у меня с прогой ......пошол ковырять.....
 
M

Mazhor

блин спасибо огромное за ответ на тупой вопрос, :lol: все сделал и все работает, мешно самому над собой :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!