12. december 2000 - 13:42Der er
39 kommentarer og 3 løsninger
Builder 5 Kald af funktion, til at oprette i Oracle tabeller
Jeg arbejder i Builder 5.0 og Oracle 8i, Hvordan får jeg sat noget ind i mine tabeller, hvordan kalder jeg OpretKunde(), og er det nok i OpretClick, hjælp……
//KUNDEFORM.CPP void __fastcall TKundeFormFrm::GodkendAnnulerClick(TObject *Sender) { switch(Application->MessageBox( \"Vil du gennemføre dine oprettelser eller vil du annulere dem\", \"Gennemfør oprettelser?\",MB_YESNOCANCEL)) { case IDCANCEL: break; case IDYES: DataModule1->boligmappen->Commit(); Application->MessageBox( \"Oprettelserne er nu gennemført\", \"Oprettelser gennemført\",MB_OK); Close(); break; case IDNO: DataModule1->boligmappen->Rollback(); Application->MessageBox( \"Oprettelserne er nu annuleret\", \"Oprettelserne annuleret\",MB_OK); Close(); break; }
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
(din parameter), hvad skal jeg skrive der? Jeg roder rundt i pointernavne, tabelnavne og varialnavne, jeg kan ikke finde rundt i det mere, men programmet kan compiles fejlfrit, men ligemeget hvad jeg gør har programmet ingen funktion.Modelkomponenet.H ser sådan ud. HJÆÆLPP.
Kære Hr. Ekspert:0] Det har jeg prøvet, men prøver igen, hvorfor virker det så ikke, måske ligger problemmet et andet sted. Kan du se noget andet galt? Jeg har forbindelse til databasen i Oracle8i, det tog mig ca. en måned at få det til at virke.
Fejlmeddelserne: Cannot convert \"Kunde_\" to \'Kunde_\' Improper use of typedef \'string\' Function call missing) W8004 \'K\' is assigned a value that is never used Jeg tror snart, jeg skriger, opgiver, finder en anden uddannelse.(øh, det sidste var min egen personlige fejlmeddelse)
Er vi ikke enige om at de oplysninger du skal gemme for kunden HAR du indlæst på en eller anden måde, og dermed at du allerede HAR en instans af Kunde ?!?:
Kunde *tmpKunde = new Kunde(); : tmpKunde->SaetKundenr(StrToInt(KundeForm->Edit1->Text)); tmpKunde->SaetKundeNavn(KundeForm->Edit2->Text); osv. :
Når du så rent faktisk skal af med kunden (dvs. oprettet den i din database) laver du:
som du kan se får du en del dobbelt-konfekt med den måde du har lavet OpretKunde på, når den er en memberfunktion til Kunde klassen. Du kan ligeså godt bare anvende Kunde klassens data felter direkte i din Kunde::OpretKunde function:
Du kan derudover evt. ændre eller overloade din constructor til Kunde klassen, sådan at du kan angive Navn, Adresse osv. allerede når du initiere din instans af Kundeklassen:
void Kunde::Kunde(string nyNavn, string nyFirma, ...) { Navn = nyNavn; Firma = nyFirma; osv. : // Hvis du evt. vil oprette kunden direkte i databasen med det samme. OpretKunde(); }
jeg tror nu han har lavet en tom konstruktør, og dermed ikke bruger nogen attributter. Opretkunde er bare en funktion der er indkapslet, og har derfor brug for parameterne!
Men man skulle nok have hele koden for at være sikker!
stigc->( Det kan være jeg skal finde et rengøringsjob istedet.)ØV Nu har jeg prøvet og får disse fejlmeddelser: [C++ Error] KundeForm.cpp(96): E2451 Undefined symbol \'Kunde\' [C++ Error] KundeForm.cpp(96): E2451 Undefined symbol \'K\' [C++ Error] KundeForm.cpp(96): E2303 Type name expected [C++ Error] KundeForm.cpp(96): E2379 Statement missing ;
void __fastcall TKundeFormFrm::AfslutKnapClick(TObject *Sender) { switch(Application->MessageBox( \"Vil du gennemføre dine oprettelser eller vil du annulere dem\", \"Gennemfør oprettelser?\",MB_YESNOCANCEL)) { case IDCANCEL: break; case IDYES: DataModule1->boligmappen->Commit(); Application->MessageBox( \"Oprettelserne er nu gennemført\", \"Oprettelser gennemført\",MB_OK); Close(); break; case IDNO: DataModule1->boligmappen->Rollback(); Application->MessageBox( \"Oprettelserne er nu annuleret\", \"Oprettelserne annuleret\",MB_OK); Close(); break; }
void __fastcall TKundeFormFrm::GodkendAnnulerClick(TObject *Sender) { switch(Application->MessageBox( \"Vil du gennemføre dine oprettelser eller vil du annulere dem\", \"Gennemfør oprettelser?\",MB_YESNOCANCEL)) { case IDCANCEL: break; case IDYES: DataModule1->boligmappen->Commit(); Application->MessageBox( \"Oprettelserne er nu gennemført\", \"Oprettelser gennemført\",MB_OK); Close(); break; case IDNO: DataModule1->boligmappen->Rollback(); Application->MessageBox( \"Oprettelserne er nu annuleret\", \"Oprettelserne annuleret\",MB_OK); Close(); break; }
Soepro-> Jeg forstår ikke helt, det du skriver, men jeg har en tom database, fornær lige det jeg har afprøvet med direkte i oracle.
Gider du at forklare det nærmere. Har jeg dobbelt konfekt?? Det er fordi jeg har prøvet på flere måder.
Jeg sætter point endnu engang, da det skal være færdigt til fredag morgen og jeg kan ikke finde ud af det sidste, jeg har forsøgt, i en hel måned har jeg arbejdet på det og jeg ved, at i kan lave det på en eftermiddag, det er bare spørgsmål om pointene er høje nok. Så please help me!!!! Så får i et kys.................................. (Man må jo udnytte, det at være hunkønsvæsen i en mandeverden.) :-))))))))
linie 5 er afskåret 1. create user tjaso identified by tjaso 2. default tablespace user_data 3. temporary tablespace temporary_data 4. quota unlimited on user_data quota unlimited on temporary_data; 5. grant connect, resource to tjaso / Hvad vil det sige?
Ja, nu da, da gik i editor lå der en fil som hed user, den åbnede jeg,og satte den ind, ved egentlig ikke hvor den kom fra, men det er mit tjaso.Hvad er grant connect i oracle?
Jeg skriver sådan: Kunde_ *K = new Kunde_(); K->OpretKunde(string NytKundeNr, string NytFirmaNavn, string NyAdresse, int NytPostNr); DataModule1->boligmappen->StartTransaction();
Og får disse fejlmeddelser:
[C++ Error] KundeForm.cpp(99): E2108 Improper use of typedef \'string\' [C++ Error] KundeForm.cpp(99): E2121 Function call missing ) [C++ Warning] KundeForm.cpp(101): W8004 \'K\' is assigned a value that is never used
Det gjorde jeg også før og der var ingen fejl, men der skal jo andet i min database end lige firma1, ikk\'? .=} Og firma1 var ikke i min kundedatabase, ØV ØV, jeg føler, jeg er ved at opgive, jeg har brugt så fandens lang tid på dette program og der er intet som virker.
Kan jeg bruge alle mine void Saet funktioner i forbindelse med at oprette i tabellerne, de returnere jo ingenting, men det skal de vel heller ikke, de skal sættes og hvis hvordan gør jeg? Det er vist noget værre rod det program, ikk\'??
Du skal ikke skrive typen på, når du overfører variabler i parameter listen:
Kunde_ *K = new Kunde_(); K->OpretKunde(NytKundeNr, NytFirmaNavn, NyAdresse, NytPostNr); DataModule1->boligmappen->StartTransaction();
Mht. dobbelkonfekten hentyder jeg til det faktum at du i din Kunde_ klasse direkte har defineret forskellige felter til at indeholde f.eks. navn og firma. Da disse variabler også er tilgængelige i alle klassens EGNE funktioner, er der jo ingen grund til at overføre dem igen i kaldet til OpretKunde. Det eneste der taler for at gøre dette, er hvis du vil anvende Kunde_ klassen som en slags temporær, global variabel, som du så blot kan ændre indholdet i hele tiden. Så kunne der selvfølgelig være mening i at kunne overføre data fra din form direkte.
Mht. til at få de forskellige værdier til kunden (navn, firma osv.) skal du lave nogle TEdit componenter på din kundeform til formålet. Indholdet af dem kan du få fat i ved at skrive KundeForm->Edit1->Text, hvor Edit1 er navnet på din TEdit component. Hvis feltets indhold skal være et tal, kan du i TEdit\'s properties forhindre at andet end tal indtastes, og du skal så blot skrive StrToInt(KundeForm->Edit2->Text) for at få den numeriske værdi ud af feltet.
Helt ærligt, jeg er snart ligeglad, jeg sidder her helt alene og retter rapport til aflevering imorgen tidlig, ingen program som fungere, en dårlig rapport. Ud af fem personer i en gruppe, er den eneste, der har været aktiv. Det er umuligt at være to steder på engang. Jeg vender tilbage når jeg er kommet ned på jorden igen, jeg vil jo gerne have programmet til at køre.
Jeg kom aldrig videre, men I får nogle point for jeres store indsats, jeg er nu igang med Linux. Her kommer I nok til at høre mere fra mig med henblik på programmering i C. Tak for hjælpen stigc og soepro.
Synes godt om
Ny brugerNybegynder
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.