Нужна помощь!

Тема в разделе "Delphi - Базы данных", создана пользователем markus, 27 мар 2007.

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

    markus Гость

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

    Вложения:

    • _________.rar
      Размер файла:
      13,1 КБ
      Просмотров:
      60
  2. dragon1979

    dragon1979 Гость

    Изначально устанавливаем ClientDataSet1.Active:=False;
    Обработка события кнопки "Открыть":

    procedure TForm1.Button4Click(Sender: TObject);
    begin
    if OpenDialog1.Execute then
    DataModule2.ClientDataSet1.LoadFromFile(OpenDialog1.FileName);
    ClientDataSet1.Active:=True;
    end;

    И все! Нажимаем открыть,указываем файл 444.cds и готово.
    Если нужно открыть другой файл *.cds , то перед if OpenDialog1.Execute then нужно вставить ClientDataSet1.Active:=False во избежание конфликтов между базами (т.е. закрываем одну и открываем другую)

    Удачи!
     
  3. markus

    markus Гость

    Огромнейшее спасибо!!!!
    Если Вы не против, еще один вопросик: база открывается из файла, как
    прописать кнопку "Сохранить"(именно "сохранить", а не "Сохранить
    как..." так как с этим разобрался), что бы программа автоматически
    сохраняла именно в этот файл, который сейчас открыт, Ведь открыт файл
    может с любым названием.
     
  4. dragon1979

    dragon1979 Гость

    Например, можно так:
    определяем переменную path типа String после var Form1: TForm1:
    var
    Form1: TForm1;
    path:String;//путь к файлу
    . . .
    procedure TForm1.Button4Click(Sender: TObject);// кнопка "Открыть"
    begin
    DataModule2.ClientDataSet1.Active:=False;
    if OpenDialog1.Execute then
    DataModule2.ClientDataSet1.LoadFromFile(Opendialog1.FileName);
    DataModule2.ClientDataSet1.Active:=True;
    path:=Opendialog1.FileName;// путь к файлу(к базе) который открыли
    end;

    procedure TForm1.Button8Click(Sender: TObject);// кнопка "Сохранить базу"
    begin
    DataModule2.ClientDataSet1.SaveToFile(path);
    end;
     
  5. markus

    markus Гость

    Спасибо огромное!!!
    Все работает! :)

    А вот вопрос, на который мне на http://www.delphikingdom.com так толком и не ответили:

    ClientDataSet где-то прописывает в себе всю информацию (к терминологии не придирайтесь пожалуйста), при загрузке информации из стороннего файла (который был создан к примеру ранее, то есть этих файлов может быть много) программа как положено отображает все DBGrid, но если выйти из программы и заново ее запустить, все что только что было загружено из файла, опять DBGrig отображается, следовательно ClientDataSet это все куда-то в себя прописал.
    Так вот, как сделать, что бы либо при загрузке программы, либо при выходе из нее из ClientDataSet все удалялось (конечно лучше если при выходе из программы). Использование ClientDataSet.CreateDataSet (видимо я не понял куда толком его вставлять) почему-то не получается, при компиляции ошибок не выдается, а при запуске программы выскакивает ошибка подключения к ClientDataSet ...

    С меня пиво!
     
  6. dragon1979

    dragon1979 Гость

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

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    ClientDataset1.Active:=False;
    end;

    Если я что-то не так понял пиши-разберемся
     
  7. markus

    markus Гость

    в том то и суть что база должна работать, а не быть отключенной при запуске программы, просто что бы при запуске очищались все поля в DBGrid (были только колонки).
    как пример: запускается программа, визуально видно таблицу с колонками, можно жать кнопку "добавить" и внести информацию в таблицу, далее если все устраивает , то можно нажать кнопку "сохранить как..." и уже сохранить базу в отдельный файл. Сейчас так все и работает, но если выйти из программы и заново ее запустить, то таблица не будет пустой, а в ней будет заполнена та строчка, которую я только что добавил. То есть кроме сохранения в файл, информация о добавленной строчке сохранилась в ClientDataSet , вот меня и интересует, желательно что бы при выходе из программы все строчки из памяти ClientDataSet удалялись.
     
  8. markus

    markus Гость

    Объясни дурню, я вот сечас делаю, делаю. у меня на компе все запускается, все работает, а беру копирую всю папку с исходниками и экзешником на другой комп, ни чего не замускается и выскакивает ошибка , ругается на файл midas.dll . Извини за мою темноту, но просто даже спросить не у кого, ни одного программиста нет. если я тебе не надоел, то напиши мне на мыло : shotlandec2@mail.ru
     
  9. Barmutik

    Barmutik Гость

    При дистрибуции приложений написанных с использованием технологии multi-tier необходима поставка требуемых DLL в комплекте.. в частности MIDAS.dll..

    В хелпе есть отдельный топик посвящённый этому вопросу....
     
  10. LAW

    LAW Гость

    Если тебе нужен грид с пустыми колонками при не подключенной к нему базе, нужно через среду до компиляции или программно во время выполнения набрать эти колонки в него. Тогда он будет стоять пустой, но с сеткой.
    Через среду, просто 2 раза на него кликаешь, добавляешь полей и делаешь описание. Если понадобится код, напиши выкопаю (где-то в исходниках было).
     
Загрузка...
Статус темы:
Закрыта.

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