Forums.Avtograd.Ru: Вопросы По Delphi, Pascal - Forums.Avtograd.Ru

Перейти к содержимому

  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Вопросы По Delphi, Pascal

#1 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 01 Ноябрь 2007 - 13:22

Сабж :rolleyes:
0


  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Другие ответы в этой теме

#121 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 15 Февраль 2008 - 19:58

а вообще это раздел для програмистов... тому, что тут разбрасываются километровыми листингами удивлятся не стоит =)
0

#122 Пользователь офлайн   musashi

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 573
  • Регистрация: 01 Ноябрь 07

Отправлено 16 Февраль 2008 - 16:03

специально для тех кто неумеет читать книжки и интернет!

Пример на Делфи7 по взаимодействию с БД Access!

распаковываешь, запускаешь ЕХЕ-файл и лезишь в меню "Помощь - О программе", там я описал все что рассмотрено в данном примере, постарался выложить основные принципы работы с БД!

пользуйся!
0

#123 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 16 Февраль 2008 - 21:00

спасибо! буду разбераться =)
0

#124 Пользователь офлайн   SATANA

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 856
  • Регистрация: 06 Ноябрь 07

Иконки сообщения  Отправлено 19 Февраль 2008 - 18:48

Помогите кто чем может)Это все в Console application.Все допетрить не могу как там и че...
Задание: Вывести N значений действительных случайных чисел равномерно распределенных на интервале [0;1] и K целых чисел равномерно распределенных на интервале [0;L].

Задание:Разработать программу по угадыванию целых чисел от 0 до K. В первом варианте использовать цикл с заданным числом повторений, во втором с произвольным.
Сталкиваясь со смертью и темнотой,мы страшимся лишь неизвестности,и не более того
0

#125 Пользователь офлайн   musashi

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 573
  • Регистрация: 01 Ноябрь 07

Отправлено 19 Февраль 2008 - 19:45

Просмотр сообщенияSATANA (19.2.2008, 18:48):

Помогите кто чем может)Это все в Console application.Все допетрить не могу как там и че...
Задание: Вывести N значений действительных случайных чисел равномерно распределенных на интервале [0;1] и K целых чисел равномерно распределенных на интервале [0;L].

Задание:Разработать программу по угадыванию целых чисел от 0 до K. В первом варианте использовать цикл с заданным числом повторений, во втором с произвольным.

а что тут непонятного?
подходишь к преподу и задаешь вопросы!
0

#126 Пользователь офлайн   Grast

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 39
  • Регистрация: 01 Ноябрь 07

Отправлено 19 Февраль 2008 - 20:10

1. Как сделать отчет наподобие QReport, только чтобы выбранные данные в дб(Аксес) вводились в готовые "бланки" Word и Excel? и в нужные места....
2. Как сделать поиск по дате, чтобы он выводил самую ближайщую дату...т.е. в базе например 2е даты... 1.01.2008 и 1.02.2008....в поиске вводим например 10.01.2008...он выводит 1.01.2008 - т.е. самую ближыйшую....
Спасибо.
0

#127 Пользователь офлайн   Saray

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 2 388
  • Регистрация: 31 Январь 08

Отправлено 20 Февраль 2008 - 08:55

Просмотр сообщенияSATANA (19.2.2008, 18:48):

Задание: Вывести N значений действительных случайных чисел равномерно распределенных на интервале [0;1] и K целых чисел равномерно распределенных на интервале [0;L].

randomize;
for i := 1 to N do writeln(random:10:2);

randomize;
for i := 1 to K do writeln(random(L));

Просмотр сообщенияSATANA (19.2.2008, 18:48):

Задание:Разработать программу по угадыванию целых чисел от 0 до K. В первом варианте использовать цикл с заданным числом повторений, во втором с произвольным.

Называется поиск по бинарному дереву.
первый раз пробуешь число на середине интервала k / 2, если загаданное число меньше то принимаешь нижнюю половину интервала за новый интервал и пробуешь уже его середину k / 4, если больше соответственно k/2 + k/4 и так далее пока не кончатся попытки угадывания (первый вариант) или пока не угадаешь(второй).
каждый раз область поиска сокращается в два раза, по этому поиск происходит очень быстро в отличии от линейного перебора, например чтобы угадать число из интервала от 1 до 64 потребуется 6 операций угадывания. От 1 до 1024 соответсвенно 10.
Если женщина не права, нужно извиниться и замолчать.
0

#128 Пользователь офлайн   Saray

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 2 388
  • Регистрация: 31 Январь 08

Отправлено 20 Февраль 2008 - 09:15

Просмотр сообщенияGrast (19.2.2008, 20:10):

1. Как сделать отчет наподобие QReport, только чтобы выбранные данные в дб(Аксес) вводились в готовые "бланки" Word и Excel? и в нужные места....

FastReport умеет..
а если в ручную перекидывать в ворд то можно через TWordApplication;TWordDocument;

Просмотр сообщенияGrast (19.2.2008, 20:10):

2. Как сделать поиск по дате, чтобы он выводил самую ближайщую дату...т.е. в базе например 2е даты... 1.01.2008 и 1.02.2008....в поиске вводим например 10.01.2008...он выводит 1.01.2008 - т.е. самую ближыйшую....
Спасибо.

можно от даты пойти вверх (прибавляя по одному дню) и одновременно вниз (вычитая), которая дата первая встретится та и ближайшая....
а лучше посчитать количество дней между датами
Если женщина не права, нужно извиниться и замолчать.
0

#129 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 20 Февраль 2008 - 11:49

Просмотр сообщенияGrast (19.2.2008, 21:10):

1. Как сделать отчет наподобие QReport, только чтобы выбранные данные в дб(Аксес) вводились в готовые "бланки" Word и Excel? и в нужные места....
2. Как сделать поиск по дате, чтобы он выводил самую ближайщую дату...т.е. в базе например 2е даты... 1.01.2008 и 1.02.2008....в поиске вводим например 10.01.2008...он выводит 1.01.2008 - т.е. самую ближыйшую....
Спасибо.

1. использовать автоматизацию ворда и екселя. все элементарно и полно статей в инете
2. select max(дата) from таблица where дата <= #01/01/2008# даст нужную тебе дату
0

#130 Пользователь офлайн   Saray

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 2 388
  • Регистрация: 31 Январь 08

Отправлено 20 Февраль 2008 - 12:28

Просмотр сообщенияBarrabas (20.2.2008, 11:49):

2. select max(дата) from таблица where дата <= #01/01/2008# даст нужную тебе дату

не даст, запрос выводит максимальную дату, меньше или равную 01/01/2008, а не "ближайшую" к ней
разницу в количестве дней между датами дает функция datediff (на MS SQL и Sybase)

у мня получился вот такой запросик
select top 1 d, abs(datediff(day,d,'2008-01-10')) as cc
from t
order by cc

Если женщина не права, нужно извиниться и замолчать.
0

#131 Пользователь офлайн   Grast

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 39
  • Регистрация: 01 Ноябрь 07

Отправлено 20 Февраль 2008 - 13:00

Просмотр сообщенияSaray (20.2.2008, 10:15):

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

можешь код накидать??
0

#132 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 20 Февраль 2008 - 13:26

Просмотр сообщенияSaray (20.2.2008, 13:28):

не даст, запрос выводит максимальную дату, меньше или равную 01/01/2008, а не "ближайшую" к ней
разницу в количестве дней между датами дает функция datediff (на MS SQL и Sybase)

у мня получился вот такой запросик
select top 1 d, abs(datediff(day,d,'2008-01-10')) as cc
from t
order by cc

ну да ближайшую "слева", просто понял блищайшую как близайшую перед :)

для акса
SELECT top 1 T.ДАТА
FROM ТАБЛИЦА AS T
order by abs(datediff("d",t.ДАТА,#mm/dd/yyyy#))
0

#133 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 20 Февраль 2008 - 13:37

как связать таблицы на sql, например:

первая таблица:
|title|author_id|genre|series|desctioption|
-----------------------------------------------------

вторая таблица:
|author_id|author|about_author|
------------------------------------------

1) как их на sql или с помощью копанентов связать, чтобы по aql запросу к первоq таблицце или копаненту, вместо author_id в поле возварщалось author из второй таблицы?
2) как синхронизировать состояние первой и второй таблицы, чтобы по запросу добавки автоматически создовалась запись во второй таблицце или брался author_id если он там уже есть?
2а) при удлаении последенй записи из первой таблицы для которых нет больше связей во второй табилице соотвествующая запись из второй таблицы удалаялась?
0

#134 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 20 Февраль 2008 - 13:49

Просмотр сообщенияup (20.2.2008, 14:37):

как связать таблицы на sql, например:

первая таблица:
|title|author_id|genre|series|desctioption|
-----------------------------------------------------

вторая таблица:
|author_id|author|about_author|
------------------------------------------

1) как их на sql или с помощью копанентов связать, чтобы по aql запросу к первоq таблицце или копаненту, вместо author_id в поле возварщалось author из второй таблицы?
2) как синхронизировать состояние первой и второй таблицы, чтобы по запросу добавки автоматически создовалась запись во второй таблицце или брался author_id если он там уже есть?
2а) при удлаении последенй записи из первой таблицы для которых нет больше связей во второй табилице соотвествующая запись из второй таблицы удалаялась?

1)
select t.title, a.author, t.genre, t.series, t.desctioption
from таблица1 as t INNER JOIN таблица2 as a on t.author_id = a.author_id

или

select t.title, a.author, t.genre, t.series, t.desctioption
from таблица1 as t, таблица2 as a
where t.author_id = a.author_id

2) реализовать кодом

но лучше почитать про проектирование БД, имхо 2а глупость, а 2 можно сделать проще (сначало заводить автора а когда заводишь книгу выбираешь автора из второй таблицы, тебе же не только имя автора нужно добавить а еще и об авторе да еще и проблемы с опечатками будут (ну или можно как ты хочешь, просто перед инсертом книги проверяй есть ли автор с таким именем если нет то добавь его сначало и получи его ID, а если еть то просто получи его ID подставь) .
Авторов удалять нужно отдельной кнопкой а не автоматом.
0

#135 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 20 Февраль 2008 - 13:59

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

кстати вот щас только допёрло: как обновить запись? вот допустим есть данные в первой таблици, но надо обнавить поле desctioption при условии что author(из второй таблицы) и title(из первой) извесны. аналогичное для поля about_author

а воообще неплохобы мне ссылку на доки по sql запрсам для делфи...
0

#136 Пользователь офлайн   Saray

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 2 388
  • Регистрация: 31 Январь 08

Отправлено 20 Февраль 2008 - 14:18

Просмотр сообщенияup (20.2.2008, 13:59):

кстати вот щас только допёрло: как обновить запись? вот допустим есть данные в первой таблици, но надо обнавить поле desctioption при условии что author(из второй таблицы) и title(из первой) извесны. аналогичное для поля about_author


update первая_таблица set description = ' ' where title = xx and author_id = yy

update вторая_таблица set about_author = ' ' where author_id = yy

сложные апдейты (нескольких таблиц одновременно) стандартным синтаксисом SQL'92 не поддерживаются
Если женщина не права, нужно извиниться и замолчать.
0

#137 Пользователь офлайн   Saray

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 2 388
  • Регистрация: 31 Январь 08

Отправлено 20 Февраль 2008 - 14:32

Просмотр сообщенияup (20.2.2008, 13:37):

как связать таблицы на sql, например:

первая таблица:
|title|author_id|genre|series|desctioption|
-----------------------------------------------------

вторая таблица:
|author_id|author|about_author|
------------------------------------------

1) как их на sql или с помощью копанентов связать, чтобы по aql запросу к первоq таблицце или копаненту, вместо author_id в поле возварщалось author из второй таблицы?
2) как синхронизировать состояние первой и второй таблицы, чтобы по запросу добавки автоматически создовалась запись во второй таблицце или брался author_id если он там уже есть?
2а) при удлаении последенй записи из первой таблицы для которых нет больше связей во второй табилице соотвествующая запись из второй таблицы удалаялась?


Нормализация БД (замена объекта его ссылкой) имеет смысл только если:
-объект сложный (состоит из нескольких полей)
-повторяется (количество книг намного больше чем кол-во авторов)
-по этому полю строятся запросы или оно является ключевым (искать по ссылке гораздо быстрее и надежнее чем по like текстовую строку)

Так что может и нет смысла вести авторов как отдельный справочник, ибо усложняет систему довольно сильно, а а толку может и не быть
Если женщина не права, нужно извиниться и замолчать.
0

#138 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 20 Февраль 2008 - 14:59

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

Просмотр сообщенияSaray (20.2.2008, 14:18):

update первая_таблица set description = ' ' where title = xx and author_id = yy

update вторая_таблица set about_author = ' ' where author_id = yy

сложные апдейты (нескольких таблиц одновременно) стандартным синтаксисом SQL'92 не поддерживаются
а как в запросе сделать автоматическую подстановку author_id из author?
0

#139 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 20 Февраль 2008 - 15:55

Просмотр сообщенияup (20.2.2008, 15:59):

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

а как в запросе сделать автоматическую подстановку author_id из author?

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

#140 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 20 Февраль 2008 - 16:10

Просмотр сообщенияSaray (20.2.2008, 15:32):

Нормализация БД (замена объекта его ссылкой) имеет смысл только если:
-объект сложный (состоит из нескольких полей)
-повторяется (количество книг намного больше чем кол-во авторов)
-по этому полю строятся запросы или оно является ключевым (искать по ссылке гораздо быстрее и надежнее чем по like текстовую строку)

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

бред, объект и есть объект, хоть с одним полем NAME, как ты потом работать будешь с ним без ID, будешь дистинк из таблицы книг делать что узнать всех авторов чтоль? и так каждый раз при заполнении комбобокса авторами делать дистинки всех книг - очень умно. Так можно постутить если только автор там вобще как примечание. по хорошему и жанры нужно выносить в справочник и чего там еще (нужно понять где объект а где просто коментарий)
у нермализованная БД не будет именть никаких шансов на маштабируемость
я бы еще согласился если бы немного денормализовали таблицу с огромным кол-вом например операций, чтобы при построении отчетов не лезть по сложной схеме связок (например в операции есть ID компании и заная его мы можем полезть в таблицу истории владельцев компании и по дате операции унать ID владельца, тогда я бы (и то если речь идет о больших обемах) добавил ID владельза в операцию), но тогда должна быть предусмотренна процедура синхронизации этих денормализованных участков чтобы они не были противоречивыми (при изменении таблицы истории владельцев компании нужно апдейдить и операции).
0

  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей