Thread View: pl.comp.lang.delphi.bazy-danych
6 messages
6 total messages
Started by immo
Wed, 01 Mar 2017 14:05
FireDAC MSSQL i pole typu TEXT
Author: immo
Date: Wed, 01 Mar 2017 14:05
Date: Wed, 01 Mar 2017 14:05
19 lines
1885 bytes
1885 bytes
Witam,
Mam pytanie, które wyda się proste, ale:
jak zapisywać poprawnie tekst do bazy danych do pola które jest zdefiniowane jako Data Type: TEXT.
Do tej pory w programie było
query.fieldbyName('nazwa').asstring;
I pasowało do momenty gdy ktoś chciał wstawić tekst dłuższy niż coś około 8tys znaków. To generowało błąd który jak doczytałem jest generowany przez Delphi.
W każdym razie zmieniłem ten zapis na streamy, czyli:
query.ParamByName('nazwa').LoadFromStream(memorystream,ftBlob)
Oczywiście takie coś też generuje bład typu:
Operand type clash: varbinary(max) is incompatible with text.
Teraz pytanie jak temu zaradzić? Czyli jak zapisać tekst dłuższy od 8 tyś. znaków to pola typu TEXT bez zmiany typu pola w bazie?
pozdrawiam,
Przemek O.
Re: FireDAC MSSQL i pole typu TEXT
Author: immo
Date: Wed, 01 Mar 2017 14:07
Date: Wed, 01 Mar 2017 14:07
6 lines
1652 bytes
1652 bytes
W dniu środa, 1 marca 2017 15:05:46 UTC+1 użytkownik immo napisał: Zapomniał bym: Delphi najnowsze. W googlach szukałem, nic sensownego nie znalazłem - być może źle szukam. Jeśli tak to proszę o naprowadzenie. > pozdrawiam, > Przemek O.
Re: FireDAC MSSQL i pole typu TEXT
Author: miab
Date: Wed, 01 Mar 2017 14:22
Date: Wed, 01 Mar 2017 14:22
15 lines
1465 bytes
1465 bytes
W dniu 2017-03-01 o 15:05, immo pisze:
> Witam,
>
> Mam pytanie, które wyda się proste, ale:
> jak zapisywać poprawnie tekst do bazy danych do pola które jest zdefiniowane jako Data Type: TEXT.
>
> Do tej pory w programie było
> query.fieldbyName('nazwa').asstring;
> I pasowało do momenty gdy ktoś chciał wstawić tekst dłuższy niż coś około 8tys znaków. To generowało błąd który jak doczytałem jest generowany przez Delphi.
>
Może to?
http://stackoverflow.com/questions/564755/sql-server-text-type-vs-varchar-data-type
miab
Re: FireDAC MSSQL i pole typu TEXT
Author: wloochacz
Date: Wed, 01 Mar 2017 14:54
Date: Wed, 01 Mar 2017 14:54
18 lines
1589 bytes
1589 bytes
W dniu 2017-03-01 o 15:05, immo pisze: > Witam, > > Mam pytanie, które wyda się proste, ale: Kluczowe pytanie jest jakie masz DataType tego pola i typ klasy w FireDAC? OIDP to DataType takiego pola powinno być ftMemo lub ftWideMemo (dla NTEXT). Jeśli jest inaczej, to powinieneś go zmusić do poprawnego mapowania (np. przez konfigurację datatype mapping - sam wiesz jak), a wtedy nie powinno być problemów. Poza tym, text dla mssql jest oznaczony jako (highly) _deprecated_ i będzie wywalony w następnej wersji mssqla. Przejdź na Varbinary... -- wloochacz
Re: FireDAC MSSQL i pole typu TEXT
Author: immo
Date: Wed, 01 Mar 2017 14:55
Date: Wed, 01 Mar 2017 14:55
25 lines
2642 bytes
2642 bytes
W dniu środa, 1 marca 2017 15:23:57 UTC+1 użytkownik miab napisał:
> W dniu 2017-03-01 o 15:05, immo pisze:
> > Witam,
> >
> > Mam pytanie, które wyda się proste, ale:
> > jak zapisywać poprawnie tekst do bazy danych do pola które jest zdefiniowane jako Data Type: TEXT.
> >
> > Do tej pory w programie było
> > query.fieldbyName('nazwa').asstring;
> > I pasowało do momenty gdy ktoś chciał wstawić tekst dłuższy niż coś około 8tys znaków. To generowało błąd który jak doczytałem jest generowany przez Delphi.
> >
>
> Może to?
> http://stackoverflow.com/questions/564755/sql-server-text-type-vs-varchar-data-type
Ale jak to się ma do rozwiązania problemu? Ja używam Varchar/varbinary itd. Jednak w zastanym systemie mam TEXT. Wszelkie dysputy na temat używania pól TEXT czy VARCHAR/NVARCHAR znam.
Poza tym, dziwne jest to że przez np, dbForge do pola TEXT na sqlserver 2016 udało mi się wstawić tekst całej książki znacznie przekraczającej 8 tys znaków :)
A tak jak piszę z wielu powodów (nieracjonalnych przyznaje, ale nie mam na to wpływu) nie mogę zmienić typu pola, choć najprościej byłoby zmienić to na varchar(max) i zapomnieć o sprawie.
Dlatego się pytam czy ktoś może coś takiego robił, bo nie chcę odkrywać czegoś na nowo.
pozdrawiam,
Przemek O.
Re: FireDAC MSSQL i pole typu TEXT
Author: immo
Date: Wed, 01 Mar 2017 15:03
Date: Wed, 01 Mar 2017 15:03
30 lines
2329 bytes
2329 bytes
W dniu środa, 1 marca 2017 15:54:51 UTC+1 użytkownik wloochacz napisał: > W dniu 2017-03-01 o 15:05, immo pisze: > > Witam, > > > > Mam pytanie, które wyda się proste, ale: > Kluczowe pytanie jest jakie masz DataType tego pola i typ klasy w FireDAC? > > OIDP to DataType takiego pola powinno być ftMemo lub ftWideMemo (dla NTEXT). > Jeśli jest inaczej, to powinieneś go zmusić do poprawnego mapowania (np. > przez konfigurację datatype mapping - sam wiesz jak), a wtedy nie > powinno być problemów. Patrz - nie pomyślałem o tym. > > Poza tym, text dla mssql jest oznaczony jako (highly) _deprecated_ i > będzie wywalony w następnej wersji mssqla. > > Przejdź na Varbinary... > Nie mój program - nie mój problem. Firma jest dziwna. Zmiany struktury muszą być zatwierdzane przez wszystkich łącznie z zarządem :/ A na zmianę na Varchar jest odpowiedź NIE, a dlaczego - bo nie. Chyba sobie odpuszczę, nawet jeśli to po znajomości. Wietrze problemy. > -- > wloochacz pozdrawiam, Przemek O.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads