Autor Téma: ADO+SQL+TFieldType vs MSSQL datove typy - nvarchar(max) ad  (Přečteno 1285 krát)

Offline rob.

  • Nováček
  • *
  • Příspěvků: 34
  • Karma: 0
Ahoj,
mam sql dotaz, napr.

adoquery.sql.text:='select * from nejakatabulka where udajxy=:pudaj';
adoquery.parameters.parambyname('pudaj').datatype:=ftstring;
adoquery.parameters.parambyname('pudaj').value:=nejakylabel.caption;
adoquery.open hodi chybu
"the datatypes nvarchar(max) and text are incompatibile in the equal operator"

coz sice chapu, ze porovnavam vpodstate hrusky s jabkama (v databazi je dane pole typu nvarchar coz neni tak docela delphi string...) ale pak mi neni jasne jake tfildtype je pro sql server ekvivalentem nvarcharu...
ftmemo ? ne, ftwidestring ? ne, proste z tech co jsou v helpu zadne takze pokud to takto chci vyspecifikovat v parametrech tak co ?
neco jsem vygooglil, jako convert v sql ale moudry z toho nejsem, existuje nejake ciste reseni? Dekuji za rady.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1257
  • Karma: 28
    • Pepak.net
Re:ADO+SQL+TFieldType vs MSSQL datove typy - nvarchar(max) ad
« Odpověď #1 kdy: 23-03-2015, 15:38:00 »
Nebude stačit jen tomu parametru nastavit i maximální velikost, ideálně stejnou, jako je v databázi?

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 1663
  • Karma: 69
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:ADO+SQL+TFieldType vs MSSQL datove typy - nvarchar(max) ad
« Odpověď #2 kdy: 23-03-2015, 15:57:22 »
Podle všeho je to omezení MS SQL.
Kód: [Vybrat]
Comparison operators can be used on all expressions except expressions of the text, ntext, or image data types.

Máš použít prý LIKE.
Nebo něco jako convert(nvarchar(max), text) = :pudaj

Kdyz zadas do google the datatypes nvarchar(max) and text are incompatibile in the equal operator, tak ti to hodi x výsledků, s řešením s LIKE
Embarcadero MVP - Czech republic

Offline rob.

  • Nováček
  • *
  • Příspěvků: 34
  • Karma: 0
Re:ADO+SQL+TFieldType vs MSSQL datove typy - nvarchar(max) ad
« Odpověď #3 kdy: 23-03-2015, 18:18:34 »
s like to funguje, super, to by me nenapadlo a to s convertem jsem v google nasel a neprislo mi to moc elegantni spise mi pripadlo divny, ze k nejzakladnejsimu ze zakladnich datovych typu sql serveru neexistuje ekvivalent v TFieldType. Kazdopadne vyreseno, vsem diky moc.

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 563
  • Karma: 23
Re:ADO+SQL+TFieldType vs MSSQL datove typy - nvarchar(max) ad
« Odpověď #4 kdy: 23-03-2015, 22:54:02 »
s like to funguje, super, to by me nenapadlo a to s convertem jsem v google nasel a neprislo mi to moc elegantni spise mi pripadlo divny, ze k nejzakladnejsimu ze zakladnich datovych typu sql serveru neexistuje ekvivalent v TFieldType. Kazdopadne vyreseno, vsem diky moc.

v db to máš jako co? text nebo ten varchar(max). S tím by to porovnání jít mělo.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: