Avatar billede roz Nybegynder
27. februar 2005 - 21:18 Der er 16 kommentarer og
1 løsning

Problem med sletning af tekst i felter

Jeg har følgende kode:

    with ScheduleDataset do
      begin
      Close;
      Commandtext:= 'SELECT * FROM Calendar WHERE Calendar.Schedule = '''+ComboBox2.Items.Strings[ComboBox2.Itemindex]+''';';
      Open;
      Edit;
      for i := 0 to RecordCount do
      if FieldByName('Schedule').AsString > '' then FieldByName('Schedule').Destroy;
      Post; // her kommer fejlen: En tom række kan ikke indsættes. Der skal være angivet mindst en kolonneværdi.


Hvorfor kommer den med denne fejl? :S
Avatar billede kalp Novice
27. februar 2005 - 21:21 #1
den der Post prøver åbenbart at indsætte en række i din database.. men uden at udfyldte noget i en eneste kolonne.. derfor den brokker sig.
Avatar billede roz Nybegynder
27. februar 2005 - 22:51 #2
Hvad kan jeg så gøre istedet?
Avatar billede kalp Novice
27. februar 2005 - 22:54 #3
Programmere ikke delphi så har lidt svært ved at finde ud af koden.. men hvis du kort fortæller mig hvilke (eller de felter du anvender) i databasen samt hvad det er du prøver på så kan jeg nok godt se det:)
Avatar billede roz Nybegynder
27. februar 2005 - 23:00 #4
with ScheduleDataset do //Gør så jeg ikke behøver at skrive ScheduleDataset foran alle disse kommandoer
      begin
      Close; //Lukker forbindelsen
      Commandtext:= 'SELECT * FROM Calendar WHERE Calendar.Schedule = '''+ComboBox2.Items.Strings[ComboBox2.Itemindex]+''';'; //Udvælger alle felter der indeholder en tekst jeg vælger. De celler der indeholder denne tekst skal tømmes
      Open; //Åbner forbindelse
      Edit; //Slår mulighed for redigering til
      for i := 0 to RecordCount do //Gåt igennem alle records
      if FieldByName('Schedule').AsString > '' then FieldByName('Schedule').Destroy; //Hvis der står tekst i et felt tømmes dette.
      Post; //Poster ændringerne


Det jeg vil med koden er at jeg vil slette indholdet i alle celler med navnet Schedule hvor indholdet er teksten jeg specificerer.
Avatar billede roz Nybegynder
27. februar 2005 - 23:00 #5
Håber du forstår :)
Avatar billede kalp Novice
27. februar 2005 - 23:06 #6
Ja okay jeg kan forstå problemet men ved ikke lige hvordan du skal gøre det... problemer er at når du kalder din post så prøver den at tilføje alle de rækker som du jo tømmer her

if FieldByName('Schedule').AsString > '' then FieldByName('Schedule').Destroy; //Hvis der står tekst i et felt tømmes dette.

så hvis du istedet kan tømme dem ved fx at skrive "" eller hvordan det gøres i delphi så burde det fungere... eller sætte den til null.
Avatar billede roz Nybegynder
27. februar 2005 - 23:17 #7
Det giver samme resultat at skrive ''. Det var det første jeg prøvede.
Avatar billede kalp Novice
27. februar 2005 - 23:24 #8
kan du ikke sige NULL eller ' ' mellemrum mellem dem?
Ellers skal du faktisk kigge på databasen vil jeg tro.. sætte en Autonummer ID felt fx. så har du altid et felt der er udfyldt
Avatar billede roz Nybegynder
27. februar 2005 - 23:29 #9
Jamen der er et felt der er udfyldt udover dette.
Der findes feltet Schedule(der skal tømmes) så findes der et dato felt, som der altid står noget i og et note felt som der ofte står noget i.
Avatar billede kalp Novice
27. februar 2005 - 23:36 #10
jeg går ud fra du selv har lavet databasen? måske er Schedule sat til NOT NULL ?
Avatar billede roz Nybegynder
27. februar 2005 - 23:43 #11
Korrekt :) Den er sat til at tillade nulllængde.
Avatar billede roz Nybegynder
27. februar 2005 - 23:47 #12
Fik det sørme til at virke nu. Med denne kode:

    with ScheduleDataset do
      begin
      Close;
      Commandtext:= 'SELECT * FROM Calendar';
      Open;
      Edit;
      for i := 0 to RecordCount do
      if FieldByName('Schedule').AsString= Combobox2.Items.Strings[Combobox2.ItemIndex] then FieldByName('Schedule').AsString:= '';
      Showmessage(ComboBox2.Items.Strings[ComboBox2.Itemindex]);
      Post;
      Refresh;
      Close;
//Herfra virker den ikke
      CommandText:= 'SELECT * FROM Schedules WHERE Schedules.Name = '''+Combobox2.Items.Strings[ComboBox2.Itemindex]+''';';
      Open;
      Edit;
      Delete;
      Post;
      Refresh;

      end;

MEN: Den sletter stadigvæk intet fra cellerne og koden efter //Herfra virker det ikke virker ikke. Den kommer med en fejl om at jeg ikke er i edit eller indsæt mode.
Avatar billede kalp Novice
27. februar 2005 - 23:56 #13
Jeg tør ikke komme med nogen bud på den:/ hvad er det for en database du arbejder med? access, oracle ect?
Avatar billede roz Nybegynder
27. februar 2005 - 23:59 #14
Access...
Avatar billede kalp Novice
28. februar 2005 - 00:00 #15
har du den åben imens du arbejder med den? prøv at lukke access og se om det er derfor
Avatar billede roz Nybegynder
28. februar 2005 - 00:02 #16
Har jeg forsøgt...
Avatar billede roz Nybegynder
28. februar 2005 - 18:39 #17
Nå fandt sørme en løsning :)
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