Помогите создать динамический запрос

Тема в разделе "SQL", создана пользователем E_Korobko, 22 фев 2006.

Статус темы:
Закрыта.
  1. E_Korobko

    E_Korobko Гость

    Здраствуйте!
    Помогите, пожалуйста, наладить динамический запрос.
    Мне необходимо в программке создавать табличку с определенными полями, а потом из другого файла выбранные файлы перенести в эту табличку(kiosk.db).
    Привожу фрагментики программы:

    {создаем файл}
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('create table kiosk');
    Query1.SQL.Add('(Kiosk char(15),Summa money,primary key(kiosk))');
    Query1.ExecSQL;
    ...

    {выборка из другой таблички}
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('select P.Kiosk,sum(P.summa)');
    Query1.SQL.Add('from "pdoxvtor.db" as P');
    Query1.SQL.Add('group by P.kiosk');
    Query1.Open;

    {заносим в файл отобранные поля таблички}
    s1 := 'C:\Program Files\Borland\Delphi6\Projects\Kiosk\kiosk.db';
    AssignFile(p, s1);
    while not Query1.Eof do
    begin
    if (FileExists(s1)=true) then Append(p)
    else Rewrite(p);
    write(p,Query1.FieldByName('Kiosk').AsString);
    write(p,' ');
    writeln(p,Query1.FieldByName('SUM OF Summa').AsString);
    Query1.next;
    end;
    System.CloseFile(p);

    ошибок нет, но файл создается с одним символов и содержит только заголовки таблицы.
    Без блока с create table все создается, но в DataBase Desktopе не открывается: пишет, что не подходящий формат, хотя расширение *.db, нет заголовков таблицы.
     
  2. Barmutik

    Barmutik Гость

    Вот эти строчки как минимум надо вынести из цикла:

    Код (Text):
    if (FileExists(s1)=true) then Append(p)
    else Rewrite(p);
     
  3. E_Korobko

    E_Korobko Гость

    Не-а, не помогает. А можно ли вообще в созданній файл при помощи create table дописывать записи при помощи write или есть другие способы.
    Я мучаюсь с этим давно, перебирала варианты, но пока ничего не получается.
     
  4. E_Korobko

    E_Korobko Гость

    и еще небольшая просьбочка: порекомендуйте мне, пожалуйста, хорошую литературу по Delphi с базами данных, желательно печатанный вариант.
    Зараннее благодарна!
     
  5. Peter123

    Peter123 Гость

    Я больше по С, но попробуй перед while поставить Query1.First();
     
  6. Barmutik

    Barmutik Гость

    Query.First не поможет потому как курсор после открытия стоит на первой записи.

    Вопрос к Вам.. а какую базу данных Вы используете ?
    Просто как-то трудно угадать Ваши манипуляции.. и по коду не понятно где Вы создаёте Вашу таблицу и зачем потом пишите поля в файл в расширением db.

    Если Вы хотите перенести записи из одной таблицы в другу ю поспользуйтесь командой INSERT и средствами работы с базами данных...
     
  7. E_Korobko

    E_Korobko Гость

    И через insert не получается. Может что-то не так делаю:
    create table kiosk (kiosk char(15),summa money, primary key(kiosk));
    insert into lyalya values ("fglgjhlgkj",1.2);

    ошибка Invalid use of keyword token: insert.

    Хотя по литературе все верно. :(
     
  8. Barmutik

    Barmutik Гость

    Хммм..

    Что-то мне кажется что после INSERT INTO должно идти имя таблицы куда вставляется...

    К тому же делать первичный ключ по строковому полю .. не совсем правильно это ...

    Я надеюсь Вы INSERT и CREATE выполняли разными командами?
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей