У меня такой вопрос
Мне надо из одной таблицы сделать три , просто по критерию раскидать из одной по трем .
У меня пока получатся тока так , что приходится для заноса каждой записи открывать таблицу заносить туда запись и снова закрывать , что является нецелесообразным , так как записей в таблице не так уж и мало , следовательно этот процесс идет долго и забивает больше памяти под себя. Как мне это сделать проще , подскажите пожалуйста... :(
и вот такой вопрос. вот я когда перебираю и анализирую строки , то попадается запись , в которой в данном столбце ничего нет , условия на то , чтобы когда в строке было значение NULL или байтовая длина переменной была больше нуля не идет :( .
а то я недолго пишу программы в Аксес и многого ишо не наю :( , но хотса унать много ....
Есть таблица , в которой больше сотни записей.
Мне надо из одной таблицы сделать три , просто по критерию раскидать из одной по трем .
У меня пока получатся тока так , что приходится для заноса каждой записи открывать таблицу заносить туда запись и снова закрывать , что является нецелесообразным , так как записей в таблице не так уж и мало , следовательно этот процесс идет долго и забивает больше памяти под себя. Как мне это сделать проще , подскажите пожалуйста... :(
и вот такой вопрос. вот я когда перебираю и анализирую строки , то попадается запись , в которой в данном столбце ничего нет , условия на то , чтобы когда в строке было значение NULL или байтовая длина переменной была больше нуля не идет :( .
а то я недолго пишу программы в Аксес и многого ишо не наю :( , но хотса унать много ....
Не совсем понятно как ты там открываешь, находишь и добавляешь записи в таблицу, через DAO что-ли? (и зачем после каждого добавления записи закрывать и открывать таблицу...?). Приведи свой код.
А потом больше сотни - это скоко? :) Если в пределах 5000, то можно тупо и через DAO перебирать. А вообще, самый быстрый способ выборки/добавления/удаления записей в таблицу - это SQL запрос, тем более, что и код как правило очень небольшой .... :)
По поводу пустого значения, есть такая замечательная функция в Access - Nz()
Не совсем понятно как ты там открываешь, находишь и добавляешь записи в таблицу, через DAO что-ли? (и зачем после каждого добавления записи закрывать и открывать таблицу...?). Приведи свой код.
А потом больше сотни - это скоко? :) Если в пределах 5000, то можно тупо и через DAO перебирать. А вообще, самый быстрый способ выборки/добавления/удаления записей в таблицу - это SQL запрос, тем более, что и код как правило очень небольшой .... :)
По поводу пустого значения, есть такая замечательная функция в Access - Nz()
__________________________________________________
я это делаю через встроенный в Аксес редактор Васика , потому что создание ещё одной отдельной проги тоже не очень , так как файлов тогда набирается куча , хоть каждый и делает свое.....
а так только несколько форм , каждая из которых содержит свое.
А вот как я открываю и копирую : .......
У меня есть форма в Аксесе, тама прописано все.
вот , форма связана с таблицей , в которой и находятся заиси. С помощью этой формы я перехожу по записям, добавляю новые,редактирую старые. (((Форма создана для удобства добавления записей в таблицу , так как заполнять каждое отдельное поле муторно и неудобно, а в форме есть режим автозаполнения некоторых полей , которые соответственно зависят только от названия фирмы.)))
а чтобы из одной таблицы мне перенести данные в другую , предварительно выбрав нужные , мне приходится открывать ту таблицу , заносить запись , и закрывать ее (я просто не наю , как сделать это попроще). и операция снова повторяется для каждой записи , что как вы сами понимаете плохо.
я попробовал бы через запрос , но я не знаю , как мне сделать так , чтобы активировать созданный запрос.
__________________________________________________
я это делаю через встроенный в Аксес редактор Васика , потому что создание ещё одной отдельной проги тоже не очень , так как файлов тогда набирается куча , хоть каждый и делает свое.....
а так только несколько форм , каждая из которых содержит свое.
А вот как я открываю и копирую : .......
У меня есть форма в Аксесе, тама прописано все.
вот , форма связана с таблицей , в которой и находятся заиси. С помощью этой формы я перехожу по записям, добавляю новые,редактирую старые. (((Форма создана для удобства добавления записей в таблицу , так как заполнять каждое отдельное поле муторно и неудобно, а в форме есть режим автозаполнения некоторых полей , которые соответственно зависят только от названия фирмы.)))
а чтобы из одной таблицы мне перенести данные в другую , предварительно выбрав нужные , мне приходится открывать ту таблицу , заносить запись , и закрывать ее (я просто не наю , как сделать это попроще). и операция снова повторяется для каждой записи , что как вы сами понимаете плохо.
я попробовал бы через запрос , но я не знаю , как мне сделать так , чтобы активировать созданный запрос.
Понятно, мы с тобой просто друг друга не поняли... я не просек, что все эти действия ты делаешь ручками... :)
Думаю тебе будет проще сначала повозиться с конструктором запросов (Вкладка - Запросы, создать с помощью конструктора)
1. Указать таблицу из которой будешь делать выборку.
2. Тип запроса выбрать - Добавление (указав таблицу куда будешь добавлять)
3. Дальше выбираешь поля и условия отбора.
Потом сохраненый запрос можно легко модифицировать и использовать много раз.
Лучше всего тебе по запросам почитать справку Access.
Понятно, мы с тобой просто друг друга не поняли... я не просек, что все эти действия ты делаешь ручками... :)
Думаю тебе будет проще сначала повозиться с конструктором запросов (Вкладка - Запросы, создать с помощью конструктора)
1. Указать таблицу из которой будешь делать выборку.
2. Тип запроса выбрать - Добавление (указав таблицу куда будешь добавлять)
3. Дальше выбираешь поля и условия отбора.
Потом сохраненый запрос можно легко модифицировать и использовать много раз.
Лучше всего тебе по запросам почитать справку Access.
дык канечна ручками я делаю это :)
радует то , что пока что у меня они ишо не кривенькие :)
вот запрос то я создам , а вот как его из формы активизировать на всякий случай , кнопочку под него создам , а вот активизировать нажатием кнопки его ишо нада (я понимаю , что это с одной стороны глупо , но ты навеное сам сталкивался с бухгалтерией , особенно када в бухгалтерии работают девушки :)))) тама ведь нада чтобы все паняна было , а то каждый раз вызывать будут по вопросу этому :) , а этт уже не радует :) ) .
как ?
запрос то сам написать тоже не так сложно , но заставить его с формы запустится ?
заранее пасиба тебе :) помог
вот что вопрос , канечна не такой вопросище , а маненький вопрос , но все таки вопрос...(я извиняюся канечна , но инада меня пофилософствовать тянет :), дажа када нужда )
Это должно выглядеть примерно так:
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.
Ну если по кнопочке с формы чтобы запускался, тогда придется небольшой код на VBA вставить в обработчик события нажатия кнопки.
Это должно выглядеть примерно так:
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.
ага , пасиба , я попробую .
а если нужно делать выборку не по самой ячейке , а по части ее содержания , которая может находится в любой части этой ячейки , то есть выборка совершается не по самой части ячейки , а по части .
ага , пасиба , я попробую .
а если нужно делать выборку не по самой ячейке , а по части ее содержания , которая может находится в любой части этой ячейки , то есть выборка совершается не по самой части ячейки , а по части .
Применительно к базам данных, обычно говорят запись (что выглядит как строка в таблице) и поле (соответсвенно...).
Если надо сравнивать в запросе не поле целиком, а какую-то часть, тогда в конструкторе запроса, поставь курсор где название поле и напиши, например так:
Выражение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