Форум: "Прочее";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];
Вниззапрос SQL Найти похожие ветки
← →
ИРГ (2009-09-27 09:52) [80]Как же менять папки ?
← →
Anatoly Podgoretsky © (2009-09-27 12:37) [81]Писец полный, не пока еще не полный.
← →
Плохиш © (2009-09-27 13:05) [82]
> ИРГ (27.09.09 09:48) [79]
>
> В учебниках нет конкретной этой проблемы.
> Программистом я не буду мне приспичило нужно сейчас
Найми программиста.
Почему каждый сантехник пытается заняться не своим делом?
← →
test © (2009-09-27 13:18) [83]ИРГ (27.09.09 09:52) [80]
Если dbf в запросе подставляешь имя таблицы(*файла с путем*) и все ок.
Плохиш © (27.09.09 13:05) [82]
Нет именно писать все норовят, благо Васька с класса сказал что он свою сборку CS написал, а я чем хуже, я свою сборку Starcraft 2 напишу это жы просто ))
← →
ИРГ (2009-09-27 13:36) [84]test ©
А как же программно менять путь ?
← →
Плохиш © (2009-09-27 13:40) [85]
> А как же программно менять путь ?
переменная := путь;
← →
ИРГ (2009-09-27 13:48) [86]у меня объявленная переменная
b:=1;
while i<12 do
begin
dir := "jet"+IntTostr(i);
DataModule2.ADOQuery2.SQL.Add("Insert into MyTable (IDn, f, i, o, dr, v, m, s, f) SELECT * from ((SELECT IDn, f, i, o, dr FROM Atab IN "b" "dBASE IV;") ");
DataModule2.ADOQuery2.SQL.Add("INNER JOIN (SELECT IDn, v, m, s, f FROM Btab IN "b" "dBASE IV;") ON Atab.IDn = Btab.IDn) ");
inc(i);
inc(b); // прибавляет + 1
в чем дело не пойму !
← →
Inovet © (2009-09-27 13:58) [87]> [86] ИРГ (27.09.09 13:48)
Вот это чтоdir := "jet"+IntTostr(i);
Не знаю зачем там "jet", убери, раз в имени такого нет соответсвенно будет"... FROM " + dir + " ..."
← →
ИРГ (2009-09-27 14:18) [88]Все равно пишет ошибочный путь похоже подключение не правильно
← →
Inovet © (2009-09-27 14:22) [89]> [88] ИРГ (27.09.09 14:18)
> Все равно пишет ошибочный путь похоже подключение не правильно
Надеюсь в обеих местаз исправил
← →
ИРГ (2009-09-27 14:29) [90]Inovet ©
Спасибо ошибочный путь теперь не пишет
Ошибка неправильно определен объект parameter
← →
ИРГ (2009-09-27 16:31) [91]Insert into не пашет ни фига
← →
test © (2009-09-27 17:56) [92]ИРГ (27.09.09 16:31) [91]
тебе нужно соединение с бд куда инсерт будешь делать, тебе нужна созданная таблица и бд
← →
Anatoly Podgoretsky © (2009-09-27 18:03) [93]> ИРГ (27.09.2009 16:31:31) [91]
Издеваешься над форумом, стебешься.
← →
Сергей М. © (2009-09-27 18:23) [94]
> ошибочный путь теперь не пишет
А куда делась b ?
← →
Ирг (2009-09-28 06:52) [95]
var
dir:string;
i:integer;
begin
i:=1;
DataModule2.ADOQuery2.ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\;Extended Properties=dBASE IV;Persist Security Info=False";
DBGrid1.Options:= DBGrid1.Options - [dgTitles];
DataModule2.ADOQuery2.SQL.Add("delete All from MyTable");
DataModule2.ADOQuery2.Close;
DataModule2.ADOQuery2.SQL.Clear;
while i<12 do
begin
dir := "С:\"+IntTostr(i);
DataModule2.ADOQuery2.SQL.Add("Insert into MyTable (IDn, f, i, o, dr, v, m, s, f) SELECT * from ((SELECT IDn, f, i, o, dr FROM Atab IN "+dir +" "dBASE IV;") ");
DataModule2.ADOQuery2.SQL.Add("INNER JOIN (SELECT IDn, v, m, s, f FROM Btab IN "+dir +" "dBASE IV;") ON Atab.IDn = Btab.IDn) ");
inc(i);
DataModule2.ADOQuery2.ExecSQL;
DataModule2.ADOQuery2.SQL.Clear;
end ;
DataModule2.ADOQuery2.Active:=true;
b нету она и ненужна
← →
test © (2009-09-28 07:36) [96]dir := "С:\"+IntTostr(i);
Имя файла настоящее должно быть, то которое у тебя реально существует.
например:
c:\output\1.dbf
что то вроде такого
dir := "С:\<директория где твои файлы лежат>\<имя файла>"+IntTostr(i)+".dbf";
← →
test © (2009-09-28 07:46) [97]Это не ответный прикол с Королевства?
← →
sniknik © (2009-09-28 08:03) [98]> Имя файла настоящее должно быть, то которое у тебя реально существует.
> например:
> c:\output\1.dbf
не обязательно, т.к. там часть пути в конекте, т.е. в сумме они должны давать реальный путь и файл, а не все в имени файла. хотя, все в имени, тоже вполне рабочий вариант.
> Это не ответный прикол с Королевства?
х.з. может сам по себе придуривается, а может и не придуривается....
← →
Сергей М. © (2009-09-28 08:20) [99]
> b нету она и ненужна
А где коннекшн ? Где создание MyTable ?
← →
Ирг (2009-09-28 09:16) [100]Мне не до приколов !!!!!
так ?
var
dir:string;
i:integer;
begin
i:=1;
DataModule2.ADOQuery2.ConnectionString:="Provider=MSDASQL.1;Persist Security Info=False;Data Source=Файлы dBASE;Initial Catalog=C:\";
DBGrid1.Options:= DBGrid1.Options - [dgTitles];
DataModule2.ADOQuery2.SQL.Add("create table MyTable (intval1 int, intval2 int)");
DataModule2.ADOQuery2.Close;
DataModule2.ADOQuery2.SQL.Clear;
while i<12 do
begin
dir := "С:\"+IntTostr(i);
DataModule2.ADOQuery2.SQL.Add("Insert into MyTable (IDn, f, i, o, dr, v, m, s, f) SELECT * from ((SELECT IDn, f, i, o, dr FROM Atab IN "+dir +" "dBASE IV;") ");
DataModule2.ADOQuery2.SQL.Add("INNER JOIN (SELECT IDn, v, m, s, f FROM Btab IN "+dir +" "dBASE IV;") ON Atab.IDn = Btab.IDn) ");
inc(i);
DataModule2.ADOQuery2.ExecSQL;
DataModule2.ADOQuery2.SQL.Clear;
end ;
DataModule2.ADOQuery2.Active:=true;
← →
test © (2009-09-28 09:39) [101]Ирг (28.09.09 09:16) [100]
Колчиство типы полей в таблице должны совпадать с запросом
create table MyTable (intval1 int, intval2 int)
Запросу просто некуда все это писать, не забудь чтобы типы совпадали
Insert into MyTable (IDn, f, i, o, dr, v, m, s, f)
Ну и табллицу ты где создаешь?
sniknik © (28.09.09 08:03) [98]
Не знал
← →
Ирг (2009-09-28 09:43) [102]
> Колчиство типы полей в таблице должны совпадать с запросом
> create table MyTable (intval1 int, intval2 int)
> Запросу просто некуда все это писать, не забудь чтобы типы
> совпадали
> Insert into MyTable (IDn, f, i, o, dr, v, m, s, f)
> Ну и табллицу ты где создаешь?
Это я не забуду !
Таблицу создаю на С:\
А подключаюсь правильно ?
← →
Сергей М. © (2009-09-28 09:45) [103]
> DataModule2.ADOQuery2.ExecSQL;
> DataModule2.ADOQuery2.SQL.Clear;
> end ;
> DataModule2.ADOQuery2.Active:=true;
>
Это что за ерунда ?
← →
Ирг (2009-09-28 10:01) [104]DataModule2.ADOQuery2.ExecSQL; // запускаем запрос
DataModule2.ADOQuery2.SQL.Clear; // чистим SQL запрос для следующего круга
end ;
DataModule2.ADOQuery2.Active:=true; // после прохождения цикла активаровать запрос чтоб DBGrid1 вывел на экран
← →
Ирг (2009-09-28 10:18) [105]DataModule2.ADOQuery2.SQL.Add("Insert into MyTable (IDn, f, i, o, dr, v, m, s, f) SELECT * from ((SELECT IDn, f, i, o, dr FROM Atab IN "+dir +" "dBASE IV;") ");
DataModule2.ADOQuery2.SQL.Add("INNER JOIN (SELECT IDn, v, m, s, f FROM Btab IN "+dir +" "dBASE IV;") ON Atab.IDn = Btab.IDn) ");
Запрос по моему у меня страдает ?
← →
Сергей М. © (2009-09-28 10:35) [106]
> после прохождения цикла активаровать запрос чтоб DBGrid1
> вывел на экран
Чего вывел-то ?
Запроса-то никакого нет - ты ж только что убил его текст строкой DataModule2.ADOQuery2.SQL.Clear)
← →
Ирг (2009-09-28 10:41) [107]Вот блин !!!
такvar
dir:string;
i:integer;
begin
i:=1;
DataModule2.ADOQuery2.ConnectionString:="Provider=MSDASQL.1;Persist Security Info=False;Data Source=Файлы dBASE;Initial Catalog=C:\";
DBGrid1.Options:= DBGrid1.Options - [dgTitles];
DataModule2.ADOQuery2.SQL.Add("create table MyTable (intval1 int, intval2 int)");
DataModule2.ADOQuery2.Close;
DataModule2.ADOQuery2.SQL.Clear;
while i<12 do
begin
DataModule2.ADOQuery2.SQL.Clear;
dir := "С:\"+IntTostr(i);
DataModule2.ADOQuery2.SQL.Add("Insert into MyTable (IDn, f, i, o, dr, v, m, s, f) SELECT * from ((SELECT IDn, f, i, o, dr FROM Atab IN "+dir +" "dBASE IV;") ");
DataModule2.ADOQuery2.SQL.Add("INNER JOIN (SELECT IDn, v, m, s, f FROM Btab IN "+dir +" "dBASE IV;") ON Atab.IDn = Btab.IDn) ");
inc(i);
DataModule2.ADOQuery2.ExecSQL;
end ;
DataModule2.ADOQuery2.Active:=true;
← →
Сергей М. © (2009-09-28 10:43) [108]И что изменилось ?
Как была ерунда, так и осталась)
← →
Inovet © (2009-09-28 11:24) [109]> [107] Ирг (28.09.09 10:41)
SELECT * FROM MyTable
← →
Thrashead (2009-09-28 11:50) [110]var
dir: String;
i: Integer;
begin
DataModule2.ADOQuery2.ConnectionString:="Provider=MSDASQL.1;Persist Security Info=False;Data Source=Файлы dBASE;Initial Catalog=C:\";
DBGrid1.Options:=DBGrid1.Options-[dgTitles];
DataModule2.ADOQuery2.SQL.Add("CREATE TABLE MyTable (IntVal1 INT, IntVal2 Int)");
DataModule2.ADOQuery2.ExecSQL;
DataModule2.ADOQuery2.Close;
for i:=1 to 12 do
begin
dir := "С:\"+IntToStr(i);
DataModule2.ADOQuery2.SQL.Clear;
DataModule2.ADOQuery2.SQL.Add("INSERT INTO MyTable (IDn, f, i, o, dr, v, m, s, f) SELECT A.IDn, A.f, A.i, A.o, A.dr, B.v, B.m, B.s, B.f FROM Atab A IN ""+dir +"" "dBASE IV;", Btab B IN ""+dir +"" "dBASE IV;" WHERE A.IDn=B.IDn");
DataModule2.ADOQuery2.ExecSQL;
end;
DataModule2.ADOQuery2.Close;
DataModule2.ADOQuery2.SQL.Clear;
← →
Ирг (2009-09-28 11:51) [111]
> И что изменилось ?
> Как была ерунда, так и осталась)
объясни пожалуйста где ерунда почему ерунда как сделать не ерунду
> SELECT * FROM MyTable
это же просто запрос а мне нужно сохранить эту выборку для дальнейшей эксплуатации
← →
MsGuns © (2009-09-28 11:53) [112]>Вот блин !!!
Это не блин, а целая пекарня однако !
>DataModule2.ADOQuery2.SQL.Add("create table MyTable (intval1 int, intval2 int)");
>DataModule2.ADOQuery2.Close;
>DataModule2.ADOQuery2.SQL.Clear;
1-й строкой в квери заносится запрос, 2-й НЕОТКРЫТЫЙ запрос закрывается
3-й запрос чистит все, что было занесено 1-м
Это что за эквилибристика ?
Кроме того, прежде чем создавать таблицу неплохо бы провереть може она существует уже - в этом случае вместо создания нужна просто очистка: Delete from MyTable
После цикла вставок сразу вот это:
DataModule2.ADOQuery2.Active:=true;
При этом текст запрооса должен быть не Insert, а select
Чтобы не путаться лучше использовать 2 разных квери - один для созданий и вставок (не возвращающий нд), второй - читающий, который и привязывать к сетке
← →
Thrashead (2009-09-28 11:53) [113]Не знаю, надо ли закрывать (Close) запрос перед его очисткой (Clear)... Кто знает - уточните?
← →
Ирг (2009-09-28 11:54) [114]
> SELECT * FROM MyTable
или имееш ввиду такInsert into MyTable (IDn, f, i, o, dr, v, m, s, f) SELECT ((SELECT IDn, f, i, o, dr FROM Atab IN "+dir +" "dBASE IV;") INNER JOIN (SELECT IDn, v, m, s, f FROM Btab IN "+dir +" "dBASE IV;") ON Atab.IDn = Btab.IDn)
почему запрос может не работать
← →
Thrashead (2009-09-28 11:55) [115]MsGuns: про два разных запроса
+1
← →
Сергей М. © (2009-09-28 12:00) [116]
> мне нужно сохранить эту выборку
Ты ее и сохраняешь в SQL-предложении INSERT
> для дальнейшей эксплуатации
"Дальнейшая эксплуатация" - это, надо понимать, просмотр в DBGrid того что получилось в результате выполнения SQL-предложении INSERT ?
Ну так а где ты делаешь выборку из результирующей таблицы MyTable ?
Где выполнение SELECT-предложения ?
Нигде.
Вот она и есть ерунда)
← →
MsGuns © (2009-09-28 12:02) [117]Вся фишка в том, что вы пытаетесь объяснить таксисту куда ехать с помощью жестов вместо того, чтобы просто назвать адрес.
Поймите одну простую вещь - если Вы хотите сохранить РЕЗУЛЬТАТ объединения, то его следует поместить в какую-то таблицу. В Вашем примере - это MyTable.
Для перезаписи файлов в эту таблицу Вы должны использовать сначала ПОДГОТОВКУ ее (создание с предварительным удалением или очисткой: второе - грамотнее).
Затем запросами к КАЖДОМУ файлу ОТДЕЛЬНО переписать их содержимое в MyTable.
Это - ПЕРВАЯ задача
Вторая задача - это ОТОБРАЗИТЬ содержимое MyTable в сетке. Для этого используется ДРУГОЙ запрос. Можно, конечно, для решения обеих задач обойтись одним компонентом Query, но надо правильно работать с ним, подготавливая правильные тексты запросов и в правильной последовательности их выполнять. С этим у Вас проблемы в виду полного непонимания того, что Вы делаете. Поэтому совет воспользоваться для отображения другой компонентой, лучше TADODataSet. Думаю, при такой постановке у Вас будет меньше путаницы
← →
Inovet © (2009-09-28 12:16) [118]> [114] Ирг (28.09.09 11:54)
>
> > SELECT * FROM MyTable
>
> или имееш ввиду так
Нет. Это уже для отображения перед
DataModule2.ADOQuery2.Active:=true;
← →
Сергей М. © (2009-09-28 16:12) [119]
> не решу писец полный
Судя по отсутствию автора, полный подкрался незаметно)
← →
Ирг (2009-09-30 06:22) [120]
>
> Судя по отсутствию автора, полный подкрался незаметно)
Да !!!
И ваши советы не помогли не хрена
Страницы: 1 2 3 4 вся ветка
Форум: "Прочее";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];
Память: 0.68 MB
Время: 0.01 c