Szabálytalan mezőnév kezelése

Szabálytalan mezőnév kezelése
2019-12-17T09:24:44+01:00
2019-12-24T22:10:53+01:00
2022-12-06T06:25:37+01:00
Zeusz1967
Sziasztok!



Létező, működő rendszert kell masszíroznom ... egy ACCESS-ben írt számlázó és nyilvántartó rendszer a masszázs tárgya. A készítő egészen jópofa nevet választott egy mezőnek: BIC/SWIFT

C# -ban igyekszem helyettesítő megoldásokat alkotni egyelőre úgy, hogy a rendszer mellette folyamatosan üzemel és a megoldásokat egyenként cserélem le, előkészítve az MSSQL-re való átállást is.

Azonban a fenti mezőn elseggel az adatfrissítés.

A log szerint:
SQL hiba! --> UPDATE VEVO SET BIC/SWIFT='HUHBLABLA' WHERE VEVO_KOD=2003 --> Szintaktikai hiba az UPDATE utasításban.
SQL hiba! --> UPDATE VEVO SET [BIC/SWIFT]='HUHBLABLA' WHERE VEVO_KOD=2003 --> Egy vagy több szükséges paraméterhez nincs érték megadva.

Erre van bárkinek bármilyen ötlete, hogy hogyan kellene helyesen kezelni?



Nyilván, ha nincs más megoldás, akkor a mező átnevezése is szóba jöhet, de az agyament struktúra miatt ezt végső megoldásnak hagynám. (És ezúton csókoltatom, aki kitalálta, hogy mezőnévbe / jelet ír.)



Köszönöm szépen előre is az ötleteket.
Mutasd a teljes hozzászólást!
Figyelmetlen voltam. Igaz, csak Management Studio-ban próbáltam, de ott 'megette'...
Mutasd a teljes hozzászólást!

  • Így sem megy?

    `BIC/SWIFT`
    Mutasd a teljes hozzászólást!
  • [BIC/SWIFT] -t használj.
    Mutasd a teljes hozzászólást!
  • Sajnos nem.


    SQL hiba! --> UPDATE VEVO SET `BIC/SWIFT`='HUHBLABLA' WHERE VEVO_KOD=2003 --> Egy vagy több szükséges paraméterhez nincs érték megadva.
    Mutasd a teljes hozzászólást!
  • Azt sajnos már próbáltam (mint az eredeti posztban is látszik).


    SQL hiba! --> UPDATE VEVO SET [BIC/SWIFT]='HUHBLABLA' WHERE VEVO_KOD=2003 --> Egy vagy több szükséges paraméterhez nincs érték megadva.
    Mutasd a teljes hozzászólást!
  • Figyelmetlen voltam. Igaz, csak Management Studio-ban próbáltam, de ott 'megette'...
    Mutasd a teljes hozzászólást!
  • Az adatbázis alatta egyelőre  ACCESS. Lehet, a parancs végrehajtatásával van akkor a gond.

    Ezzel metódussal hajtatom végre a parancsot (paraméterként az SQL stringet és a Connection stringet kapja csak az egyszerűség kedvéért, hogy a paraméter átadás se zavarhasson be (eredetileg paraméterátadással történt):


    public static Boolean ExecuteNonTransactQueryInOleDB(String QueryString, String SQLConnectionString, Boolean NoLog=false, FilterParameterList FPL=null)
            {
                Boolean result = false;
                
                OleDbConnection Connection = new OleDbConnection(SQLConnectionString);
                            
                Connection.Open();
                try
                {
                    OleDbCommand command = new OleDbCommand(QueryString, Connection);
                                            // if you pass just query text
                    command.CommandType = CommandType.Text;
                                            // if you pass stored procedure name
                                            // cmd.CommandType = CommandType.StoredProcedure;                 
                    if (FPL != null)
                    {
                        foreach (String nameOfParam in FPL.paramNameList)
                        {                        
                            command.Parameters.AddWithValue(nameOfParam, FPL.GetParameter(nameOfParam));
                        }                    
                    }
                    
                    command.ExecuteNonQuery();
                    result=true;
                }
                catch (Exception e)
                {                
                    if (NoLog == false) LoggBaseClass.Logg("SQL hiba! --> " + QueryString + " --> " + e.Message);
                }
                Connection.Close();
                return result;
            }
    Mutasd a teljes hozzászólást!
  • Közben azt is kipróbáltam, hogy a Visual Studió saját beépített DataSet kezelőjében a táblaadapterhez definiáltam egy UpdateQuery -t kizárólag ennek a mezőnek az update-jére.

    Ez lefut és megcsinálja a változtatást ...


    Tulajdonképpen AlterEgo_2 beírása indította el a gondolatmenetet ... s a beépített QueryBuilder danigore által írt szintaktikát használja ....

    Tulajdonképpen ez most akkor így megoldva, de azért az erősen érdekelne, hogy a többi mezőre működő korábbi megoldás erre a mezőre miért nem megy ...

    Köszönöm a termékenyítő gondolatokat
    Mutasd a teljes hozzászólást!
  • Termékenyítőleg beidézhetnéd azt a szintaxist, ami végül bevált.
    Mutasd a teljes hozzászólást!
  • Nem én algoritmizáltam, hanem a beépített update -jét használtam a C# beépített adatkezelőjének.
    Mutasd a teljes hozzászólást!
  • Köszi, ebből már világos, hogy melyik szintaxis vált be.
    Edit: nekem úgy tűnik, hogy mindkettő (`BIC/SWIFT` és [BIC/SWIFT] jó lett volna, ha nem lett volna más hiba is az utasításban. Mondjuk definiálatlan bind-változó.)
    Mutasd a teljes hozzászólást!
  • Bocs, de nem vagyok gép-közelben. 
    Szerintem is jónak kellett volna lenni a szögletes zárójelben írt verziónak. Ha ezt az egy mezőt kihagytam az update utasításból, akkor az update rendben megtörtént azzal a metódussal, amit fentebb idéztem, úgyhogy azt gondolom, azzal olyan nagy baj nem lehet .... persze nem kizárt...
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd