Delphi - zapis zawartosci DBGrid

0

Witam,

Mam taki oto problem, mianowicie chciałbym zapisać zawartość DBGrida (wypełnionu jakims tam selectem) do pliku *.txt. Nie mam pojęcia jak to ugryźć.

Pracuje na delphi 7, Zapis z bazy MSSQL

Będę wdzięczny za wskazówki tudzież pomoc bezpośrednią.

Pozdrawiam
Lame

0
dataset.first;
while not dataset.eof do
begin
  for i := 0 to dataset.fields.count - 1 do
  begin
    write(plik, dataset.fields[i].Value + ';');
  end;
  writeln(plik);
  dataset.next;
end

pisane z palca, powinno działać

0
TDBGrid.Columns.SaveToFile()

takie cuś?

DBGrid nie ma pola Rows więc przypuszczam że to z Columns zapisze wszystko, ale posortowanie kolejnością kolumn )

0
Potwoor_ napisał(a)
TDBGrid.Columns.SaveToFile()

takie cuś?

DBGrid nie ma pola Rows więc przypuszczam że to z Columns zapisze wszystko, ale posortowanie kolejnością kolumn )

Z tego co mi się kojarzy to pozwala to na zapisanie ustawień kolumn z DBgrida a nie jego zawartości.

@Misiekd - sprawdze Twoje wywołanie w międzyczasie.

0

@Misiekd
powiedz mi prosze za co odpowiedzialne jest wywołanie

dataset.first

ponieważ przy próbie zapisu do pliku dostaje komunikat:
Cannot perform this operation on a closed dataset.

0

za przeskoczenie do pierwszego rekordu, a komunikat mówi Ci, że nie możesz poruszać się po zamkniętym (nie otwartym) zbiorze danych

0

hmm nie bardzo wiem co może być przyczyną takiego komunikatu... jeśli masz jakieś pomysły to będę wdzięczny za pomoc.

0

skoro nie masz otwartego to otwórz =D

coś jak

dataset.open

się chyba znajdzie ?

0

Hehe jak zwykle na najtrywialniejsze rozwiązanie najtrudniej wpaść ;-)
Pojawił się kolejny błąd ale może coś sam wymyślę. Jeśli nie to zgłoszę się do Was po pomoc :)

0

Poprawiłem kilka rzeczy ale znów na czymś utknąłem.

przy próbie zapisania pliku dostaje komunikat:
Could not convert variant of type (string) into type (double).
w linijce:

write(plik, dataset.fields[i].Value + ';');

nie wiem jak ten problem obejść.

0

Nicka masz adekwatnego : ) Proponuje poczytać trochę lektur...

Zamiast dataset.fields[i].Value użyj dataset.fields[i].AsString.

0
var
i:integer;
plik:string;
begin
plik:='c:\test.txt';

dataset.open;
dataset.first;
dataset.SQL.Text:='select * from blok';
while not dataset.eof do
begin
  for i := 0 to dataset.fields.count - 1 do
  begin
    write(plik, dataset.fields[i].asstring + ';');
  end;
  writeln(plik);
  dataset.next;
end;

tak mniej więcej wygląda funkcja, kilka rzeczy jest jeszcze poustawianych w komponentach.
Jednakże przy próbie zapisania dostaje error:
I/O 105 error

czego jeszcze nie zdefiniowałem??

0

Przepraszam nie jest to funkcja tylko procedura.

0
  1. poczytaj o obsłudze plików (assign, reset, rewrite, closefile, itp)
  2. najpierw się przypisuje treść zapytania a potem robi open
0

Dlaczego ten post nie jest jeszcze tam gdzie być powinien ?

0

Dzięki za pomoc...kurcze takie trywialne błędy robiłem...ehh [wstyd] . ale udało się i wymiana danych działa elegancko. Pozdrawiam LAME

1 użytkowników online, w tym zalogowanych: 0, gości: 1