Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

У меня такой вопрос

2.2K
17 июня 2003 года
dark_legion
16 / / 17.06.2003
Есть таблица , в которой больше сотни записей.
Мне надо из одной таблицы сделать три , просто по критерию раскидать из одной по трем .
У меня пока получатся тока так , что приходится для заноса каждой записи открывать таблицу заносить туда запись и снова закрывать , что является нецелесообразным , так как записей в таблице не так уж и мало , следовательно этот процесс идет долго и забивает больше памяти под себя. Как мне это сделать проще , подскажите пожалуйста... :(

и вот такой вопрос. вот я когда перебираю и анализирую строки , то попадается запись , в которой в данном столбце ничего нет , условия на то , чтобы когда в строке было значение NULL или байтовая длина переменной была больше нуля не идет :( .

а то я недолго пишу программы в Аксес и многого ишо не наю :( , но хотса унать много ....
258
17 июня 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by dark_legion
Есть таблица , в которой больше сотни записей.
Мне надо из одной таблицы сделать три , просто по критерию раскидать из одной по трем .
У меня пока получатся тока так , что приходится для заноса каждой записи открывать таблицу заносить туда запись и снова закрывать , что является нецелесообразным , так как записей в таблице не так уж и мало , следовательно этот процесс идет долго и забивает больше памяти под себя. Как мне это сделать проще , подскажите пожалуйста... :(

и вот такой вопрос. вот я когда перебираю и анализирую строки , то попадается запись , в которой в данном столбце ничего нет , условия на то , чтобы когда в строке было значение NULL или байтовая длина переменной была больше нуля не идет :( .

а то я недолго пишу программы в Аксес и многого ишо не наю :( , но хотса унать много ....



Не совсем понятно как ты там открываешь, находишь и добавляешь записи в таблицу, через DAO что-ли? (и зачем после каждого добавления записи закрывать и открывать таблицу...?). Приведи свой код.
А потом больше сотни - это скоко? :) Если в пределах 5000, то можно тупо и через DAO перебирать. А вообще, самый быстрый способ выборки/добавления/удаления записей в таблицу - это SQL запрос, тем более, что и код как правило очень небольшой .... :)

По поводу пустого значения, есть такая замечательная функция в Access - Nz()

2.2K
17 июня 2003 года
dark_legion
16 / / 17.06.2003
Цитата:
Originally posted by SergeySV


Не совсем понятно как ты там открываешь, находишь и добавляешь записи в таблицу, через DAO что-ли? (и зачем после каждого добавления записи закрывать и открывать таблицу...?). Приведи свой код.
А потом больше сотни - это скоко? :) Если в пределах 5000, то можно тупо и через DAO перебирать. А вообще, самый быстрый способ выборки/добавления/удаления записей в таблицу - это SQL запрос, тем более, что и код как правило очень небольшой .... :)

По поводу пустого значения, есть такая замечательная функция в Access - Nz()



__________________________________________________
я это делаю через встроенный в Аксес редактор Васика , потому что создание ещё одной отдельной проги тоже не очень , так как файлов тогда набирается куча , хоть каждый и делает свое.....
а так только несколько форм , каждая из которых содержит свое.
А вот как я открываю и копирую : .......
У меня есть форма в Аксесе, тама прописано все.
вот , форма связана с таблицей , в которой и находятся заиси. С помощью этой формы я перехожу по записям, добавляю новые,редактирую старые. (((Форма создана для удобства добавления записей в таблицу , так как заполнять каждое отдельное поле муторно и неудобно, а в форме есть режим автозаполнения некоторых полей , которые соответственно зависят только от названия фирмы.)))
а чтобы из одной таблицы мне перенести данные в другую , предварительно выбрав нужные , мне приходится открывать ту таблицу , заносить запись , и закрывать ее (я просто не наю , как сделать это попроще). и операция снова повторяется для каждой записи , что как вы сами понимаете плохо.

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

258
17 июня 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by dark_legion


__________________________________________________
я это делаю через встроенный в Аксес редактор Васика , потому что создание ещё одной отдельной проги тоже не очень , так как файлов тогда набирается куча , хоть каждый и делает свое.....
а так только несколько форм , каждая из которых содержит свое.
А вот как я открываю и копирую : .......
У меня есть форма в Аксесе, тама прописано все.
вот , форма связана с таблицей , в которой и находятся заиси. С помощью этой формы я перехожу по записям, добавляю новые,редактирую старые. (((Форма создана для удобства добавления записей в таблицу , так как заполнять каждое отдельное поле муторно и неудобно, а в форме есть режим автозаполнения некоторых полей , которые соответственно зависят только от названия фирмы.)))
а чтобы из одной таблицы мне перенести данные в другую , предварительно выбрав нужные , мне приходится открывать ту таблицу , заносить запись , и закрывать ее (я просто не наю , как сделать это попроще). и операция снова повторяется для каждой записи , что как вы сами понимаете плохо.

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



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

Думаю тебе будет проще сначала повозиться с конструктором запросов (Вкладка - Запросы, создать с помощью конструктора)

1. Указать таблицу из которой будешь делать выборку.
2. Тип запроса выбрать - Добавление (указав таблицу куда будешь добавлять)
3. Дальше выбираешь поля и условия отбора.

Потом сохраненый запрос можно легко модифицировать и использовать много раз.
Лучше всего тебе по запросам почитать справку Access.

2.2K
17 июня 2003 года
dark_legion
16 / / 17.06.2003
Цитата:
Originally posted by SergeySV


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

Думаю тебе будет проще сначала повозиться с конструктором запросов (Вкладка - Запросы, создать с помощью конструктора)

1. Указать таблицу из которой будешь делать выборку.
2. Тип запроса выбрать - Добавление (указав таблицу куда будешь добавлять)
3. Дальше выбираешь поля и условия отбора.

Потом сохраненый запрос можно легко модифицировать и использовать много раз.
Лучше всего тебе по запросам почитать справку Access.



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

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

258
17 июня 2003 года
SergeySV
1.5K / / 19.03.2003
Ну если по кнопочке с формы чтобы запускался, тогда придется небольшой код на VBA вставить в обработчик события нажатия кнопки.
Это должно выглядеть примерно так:
Код:
Private Sub Кнопка1_Click()

Dim dbs As Database
Dim qdf As QueryDef, strSQL as String

' получаем текущ. базу данных
Set dbs = CurrentDb
' наш SQL запрос
strSQL = "INSERT INTO МояТаблица2 SELECT FROM МояТаблица1 WHERE (МояТаблица1.Поле1=4)"
' создаем в базе данных временный запрос, описанный в strSQL
Set qdf = dbs.CreateQueryDef("", strSQL)
' запускаем этот запрос на выполнение
qdf.Execute

' Освобождаем память
Set qdf = Nothing
Set dbs = Nothing

End Sub


Содержание переменной strSQL(у тебя будет какое-нибудь свое) - это есть запрос в виде команд SQL. Чтобы самому эти команды не писать, можно поступить очень просто. В конструкторе запросов создай свой запрос, а потом в меню "Вид" выбери "режим SQL" и увидишь свой запрос на языке SQL.
2.2K
17 июня 2003 года
dark_legion
16 / / 17.06.2003
Цитата:
Originally posted by SergeySV
Ну если по кнопочке с формы чтобы запускался, тогда придется небольшой код на VBA вставить в обработчик события нажатия кнопки.
Это должно выглядеть примерно так:
Код:
Private Sub Кнопка1_Click()

Dim dbs As Database
Dim qdf As QueryDef, strSQL as String

' получаем текущ. базу данных
Set dbs = CurrentDb
' наш SQL запрос
strSQL = "INSERT INTO МояТаблица2 SELECT FROM МояТаблица1 WHERE (МояТаблица1.Поле1=4)"
' создаем в базе данных временный запрос, описанный в strSQL
Set qdf = dbs.CreateQueryDef("", strSQL)
' запускаем этот запрос на выполнение
qdf.Execute

' Освобождаем память
Set qdf = Nothing
Set dbs = Nothing

End Sub


Содержание переменной strSQL(у тебя будет какое-нибудь свое) - это есть запрос в виде команд SQL. Чтобы самому эти команды не писать, можно поступить очень просто. В конструкторе запросов создай свой запрос, а потом в меню "Вид" выбери "режим SQL" и увидишь свой запрос на языке SQL.


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

258
17 июня 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by dark_legion

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



Применительно к базам данных, обычно говорят запись (что выглядит как строка в таблице) и поле (соответсвенно...).

Если надо сравнивать в запросе не поле целиком, а какую-то часть, тогда в конструкторе запроса, поставь курсор где название поле и напиши, например так:
Выражение1: InStr(1;Таблица1.Поле3;"-";0)

Выражение1 - это просто название столбца, в котором будут производить вычисления над содержимым поля таблицы (или 2,3,4 полей)

Функции для извлечения какого-нибудь текстового куска из строки, масса:
Left
Right
Mid
Len (их описание есть в справке)
тебе нужна InStr - она возвращает число с которого
совпал один кусок (например "aaa") в другом "sfsaaadfafgd" (вернет число 4)

Напиши (ищем значения полей содерж - abc):
Выражение1: InStr(1;Таблица1.Поле1;"abc";0)
а в условии по этому полю проверяй, чтобы оно было >0

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог