Avatar billede kgnielsen Nybegynder
24. januar 2001 - 14:01 Der er 10 kommentarer og
1 løsning

Max 128 karakterer i TQuery

Jeg har en Tquery komponent på min form, nu prøver jeg at bruge dette til at udføre et query som er over 128 karakterer lang dette kan dog ikke lade sig gøre. Jeg får en error hvor der bare står at max length er 128 char.

jeg bruger delphi 4 client/server

Håber der er har en løsning.

Mvh

Klaus
Avatar billede martinlind Nybegynder
24. januar 2001 - 14:07 #1
Hvordan ser din tabelstruktur ud, jeg tror det er der den ligger. Du kan lave SQL-forespørgelser der er lige så lange det skal være, jeg laver dagligt nogle der er ca 500 karakterer lange.
Prøv evt. :

Query1.SQL.Text := \'<SQL-kode>\';

Husk at du ikke kan bruge \' uden at du sætter to men det kan du se i delphi editoren hvis du har sat string til en anden farve
Avatar billede kgnielsen Nybegynder
24. januar 2001 - 14:44 #2
Jeg har på en MSSql server en tabel med et felttype varchar(500) det er dette felt jeg prøver at skrive en tekst ned i vha. en stored procedure som ligner dette:

CREATE PROCEDURE SP_TilfoejJournal
    @text varchar(500)
AS
insert into journal
values(@text)

Det sjove er at når jeg prøver at køre denne fra query analyzer til sql server 7 er der ingen problemer. Jeg bruger ODBC fra delphi til at forbinde til databasen, kan dette have noget at sige.
Avatar billede martinlind Nybegynder
24. januar 2001 - 15:00 #3
Du skal Bruge en BlobStream til at læse og skrive fra et blob felt
myStream := Tquery.CreateBlobStream(Feltnavn,bmReadWrite);

Så virker det og du behøver ikke bruge en stored proc.

/Martin
Avatar billede kgnielsen Nybegynder
24. januar 2001 - 15:10 #4
Nu kan det godt være du synes jeg er skør, men jeg vil gerne bruge en stored procedure da min brugere så ikke skal have rettigheder på tabellen, men kun execute på min SP. Kan det lade sig gøre at bruge denne blobstream med en SP ?
Avatar billede martinlind Nybegynder
24. januar 2001 - 15:18 #5
Det ved jeg faktisk ikke, for jeg har ikke prøvet, men der er jo noget der kan tyde på at du kun kan overføre et parameter på 128 char til sådan en. Kan du ikke lave en dummy tabel med et blobfield i og så opd. den, lave en trigger på den der overfører data til den rigtige tabel, så har brugerne kun adgang til dummy tabelen ( bare en ide )

/Martin
Avatar billede kgnielsen Nybegynder
24. januar 2001 - 15:39 #6
Hej Igen !!

Jeg har siddet og rodet lidt med blob streams. Kunne du ikke vise mig et funktion som skriver en tmemo ned i et databsefelt. Skidt med SP\'ere.

Vi skal vist snart til at have nogle flere point på bordet eller hvad ?
Avatar billede martinlind Nybegynder
24. januar 2001 - 15:46 #7
Paste fra hjælpen:

procedure TForm1.Button1Click(Sender: TObject);

var
  Stream1, Stream2 : TBlobStream;
begin
  Stream1 := TBlobStream.Create(Table1Notes, bmRead);
  try
    Table2.Edit;
    { here’s a different way to create a blob stream }
    Stream2 := Table2.CreateBlobStream(Table2.FieldByName(\'Remarks\'), bmReadWrite);
    try
      Stream2.CopyFrom(Stream1, Stream1.Size);
      Table2.Post;
    finally
      Stream2.Free;
    end;
  finally
    Stream1.Free;

  end;
end;

Mit Eks. :

procedure TForm1.Button1Click(Sender: TObject);
VAR
  S : TBlobStream;
begin
  S := Query1.CreateBlobStream(Query1.FieldByName(\'<Blobfieldname>\'),bmReadWrite);
  Memo1.Lines.SaveToStream(S);
  S.Free;
end;

Dette skulle virke

/Martin
Avatar billede martinlind Nybegynder
24. januar 2001 - 15:46 #8
Ekstra point sige vi aldrig nej til *S*

/Martin
Avatar billede kgnielsen Nybegynder
25. januar 2001 - 14:05 #9
Hej Martin

jeg har løst problemet ved at lave en SP som tilføjer til feltet og så deler delphi strengen op og sender den at det antal gange som er nødvendigt. Vist lidt en work around, men det går nok i dette tilfælde. Tak for hjælpen.

Klaus

Avatar billede martinlind Nybegynder
25. januar 2001 - 14:43 #10
Hej Klaus, jeg falt over nogle FreeUDF til ib, med nogle blob-functioner det er måske noget du kan bruge, gi mig en mailadr. så sender jeg dem

/Martin
Avatar billede kgnielsen Nybegynder
26. januar 2001 - 10:13 #11
Hej Martin

Dem vil jeg da gerne se du kan sende dem til mig på kgn@linux.eucsyd.dk

/Klaus
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



IT-JOB