Avatar billede janbb Juniormester
15. august 2003 - 14:03 Der er 12 kommentarer og
1 løsning

AdoTable1.commitUpdates ?

har prøvet at lave et lille testprogram med en accesdatabase og jeg er med møje og besvær kommet frem til at skulle gemme nye records.Der er imidlertid det problem at de for en "alm Table" commandoer synes at være uidentificerede.Jeg har kigget lidt i hjælpen for ADO-tabbeller, men er blevet lidt forvirret.Vil da lige prøve om der er nogen der sidder med et par 'kneb' i lommen - inden jeg knokler ud af en forkert tangent :)
Avatar billede janbb Juniormester
15. august 2003 - 14:05 #1
ja, sådan ser det ud (nu må i ikke more jer for meget over min primitive stil):

unit adoUnit3;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Db, ADODB;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    ADOTable1ID: TAutoIncField;
    ADOTable1Name: TWideStringField;
    ADOTable1Age: TIntegerField;
    ADOTable1Phone: TIntegerField;
    ADOTable1EMail: TWideStringField;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button2: TButton;
    Edit1: TEdit;
    Button3: TButton;
    Memo1: TMemo;
    Edit2: TEdit;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var t:integer;
begin

    While not adoTable1.Eof do




  begin

  end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin

begin
ADOTable1.edit;
ADOTable1.Fields.Fieldbyname('name').AsString:=  edit1.text;

ADOTable1.post;
end;
end;



procedure TForm1.Button3Click(Sender: TObject);
begin

  Label1.Caption := ADOTable1.Fields.Fieldbyname('age').AsString;
Label2.Caption := ADOTable1.Fields.Fieldbyname('name').AsString;
Label3.Caption := ADOTable1.Fields.FieldByName('Phone').AsString;
Label4.Caption := ADOTable1.Fields.FieldByName('Email').AsString;
Label5.Caption := ADOTable1.Fields.FieldByName('ID').AsString;

end;



procedure TForm1.Button4Click(Sender: TObject);
begin
ADOTable1.edit;
ADOTable1.Fields.FieldByName('Email').AsString:=edit2.text;
ADOTable1.post;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
adotable1.append;
adotable1.edit;

ADOTable1.Fields.FieldByName('Email').AsString:= Label4.Caption;
  adotable1.post;
end;



procedure TForm1.Button6Click(Sender: TObject);
begin
adotable1.first;
end;


procedure TForm1.Button8Click(Sender: TObject);
var t:integer;
begin

adotable1.prior;

end;

procedure TForm1.Button7Click(Sender: TObject);
begin
adotable1.last;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin





  //  commitupdates;  undecleared identifier  ?




end;

end.
Avatar billede snowball Novice
15. august 2003 - 14:06 #2
Prøv og kig lidt på http://home1.inet.tele.dk/j-cgeert/ADO_Test.zip - Der er nogle grundlæggende eksempler på at hente/gemme/redigere noget i en access databse. Fremgangsmåden er dog lidt anerledes end din.

Snowball
Avatar billede dkn Nybegynder
15. august 2003 - 14:07 #3
har ikke helt forstået hvad du ønsker at gøre?
Undo?
Du behøver jo ikke at opdatere noget efter du har postet det...
Avatar billede stoney Nybegynder
15. august 2003 - 14:08 #4
ADOTable1.Fields.Fieldbyname('name').AsString:=  edit1.text;

skal AsString ikke være value

det gælder et par steder

Stoney
Avatar billede janbb Juniormester
15. august 2003 - 14:19 #5
I den første procedure skulle der self. have stået:  ADOTable1.next; efter begin.
dkn:Men problemet er at den ikke gemmer de nye poster, dvs den gemmer dem åbenbart i hukommelsen - for hvis man laver en ny og så går til 'prior' kan man se dem.I hjælpen er der noget for alm. tabeller med starttransaction, applyupdates, commit, rollback, commitupdates, men med ado bliver det til noget 'before-do' der virker ret mystisk.
snowball: jeg prøver at kigge på det.
Avatar billede janbb Juniormester
15. august 2003 - 14:21 #6
stoney: ved jeg ikke.Det bliver lidt indviklet hvis man bruger de fields med tal så jeg bruger kun dem med tekst i første ombæring.
Avatar billede janbb Juniormester
15. august 2003 - 14:54 #7
snowball: der er virkelig 'gang i' fejlmeddelserne i det eksempel (på min computer) men det er muligt jeg kan bruge det til at blive lidt klogere af.
I hvert fald tager den den nye record ind ved genstarten af programmet, hvilket
siger mig at opgaven har et mulig opnåeligt resultat.Du burde skrive det som et svar, men jeg lader spørgsmålet være åbent nogen tid endnu .. ikke. og tak.:)
Avatar billede snowball Novice
15. august 2003 - 14:58 #8
Hvilke fejl får du !? Jeg har slet ikke lavet noget fejlhåndtering på det, så hvis f.eks. indholdet af edit3 ikke er et tal vil du få en fejl.

"I hvert fald tager den den nye record ind ved genstarten af programmet" <- Er ikke lige med på hvad du mener !?

Snowball
Avatar billede janbb Juniormester
15. august 2003 - 15:25 #9
snowball:
Det er givetvis mig der har gjort noget forkert, men jeg får 'den sædv' som jeg selv har kæmpet med: eof- fejl og desuden når jeg lukker programmet en microsoft fejl.Det skal osse siges at jeg på den computer jeg arbejder på ikke har acces installeret og det er muligt, det ville gå glattere på min anden computer, hvilket jeg vil forsøge.Jeg er dog meget glad for indsigten i dataset og commando, som jeg slet ikke selv havde mulighed for at udforske og jeg vil mer end gerne give alle points for de guldkorn og jeg tror heller ikke der kommer nogen med ret bedre svar så du får points med det samme.
Avatar billede snowball Novice
15. august 2003 - 15:28 #10
Bruger du Delphi 5 !?

Snowball
Avatar billede janbb Juniormester
15. august 2003 - 15:43 #11
ja
Avatar billede snowball Novice
15. august 2003 - 16:04 #12
Så gå ind på http://info.borland.com/devsupport/delphi/downloads/index.html og hent en Update Pack til den version du bruger, samt ADOExpress Update Pack 2. Det hjælper på dit problem med EOF

Snowball
Avatar billede janbb Juniormester
15. august 2003 - 16:33 #13
Ja, det er nok der det halter.Det prøver jeg.Tak igen.(Janbb)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester