Thread View: pl.comp.lang.delphi.bazy-danych
6 messages
6 total messages
Started by immo
Wed, 01 Mar 2017 06:05
FireDAC MSSQL i pole typu TEXT
Author: immo
Date: Wed, 01 Mar 2017 06:05
Date: Wed, 01 Mar 2017 06:05
24 lines
933 bytes
933 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 06:07
Date: Wed, 01 Mar 2017 06:07
9 lines
300 bytes
300 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: immo
Date: Wed, 01 Mar 2017 06:55
Date: Wed, 01 Mar 2017 06:55
39 lines
1574 bytes
1574 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 07:03
Date: Wed, 01 Mar 2017 07:03
39 lines
1177 bytes
1177 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.
Re: FireDAC MSSQL i pole typu TEXT
Author: miab
Date: Wed, 01 Mar 2017 15:22
Date: Wed, 01 Mar 2017 15:22
14 lines
550 bytes
550 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 15:54
Date: Wed, 01 Mar 2017 15:54
17 lines
575 bytes
575 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
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